makeCounter() возвращает функцию - счетчик, которая при каждом вызове будет выдавать на 1 большее значение. И makeCounter для каждого вызова себя хранит текущее значение счетчика в переменной currentCount.
Можно сделать несколько независимых счетчиков:
var counter1 = makeCounter();
var counter2 = makeCounter();
makeCounter()() - создаст счетчик и запустит его 1 раз (результат 1).
Если еще раз запустить makeCounter()() - появится новый счетчик (результат 1).
Переменная counter нужна, чтобы запомнить тот самый счетчик, а не создавать каждый раз новый.