Почему indexOf сначала видит подстроку в строке, а затем не видит?
Потому что в аргументы нужно совать что искать, а не в чем, во втором случае вы ищете 'sto re ' в строке 'sto '
У вас в аргументе метода indexOf передается то, чего нет в строке относительно которой вызывается метод.

Вот так вернее.
console.log('sto '.indexOf('sto ')); // 0 - true

console.log('sto re '.indexOf('sto ')); // 0 - true