а разница в том, что str.indexOf("jpg",str.length-3) сравнивает только последние три символа твоей строчки. а lastIndeOf только последнее вхождение по всей строчке...
в первом случае файл 23jpg.php спокойно загрузится в твою директорию и последствия будут непоправимы

, а во втором вариант 23jpg.php не прокатит. тебе же это надо было? а ты сдеал совсем не то...
Удачи!