Димаш Кенжегалиев, Что? Если Вам indexOf нашел вхождение, значит порядок индексов "в строгом порядке" и "имеет наименьшее расстояние". Чего Вы хотите добиться?
Вопрос 2. Это операция постинкремента, а чтобы возвращался результат икремента надо использовать преинкремент (++i).
Вопрос 3. Потому что makeCounter вернула Вам функцию, в области видимости которой (в замыкании) есть переменная count, которая увеличивается с каждым вызовом внутренней функции makeCounter.