Почему цикл for (forEach) обрабатывает элементы через один?
Потому что удаляя класс по которому вы произвели выборку элементов, тем самым вы удаляете этот элемент из массива выборки, а индекс увеличивается на единицу.
То есть: 
первый вызов - индекс = 0, кол-во элементов = 10,обрабатывается 1-й элемент исходного массива;
второй вызов - индекс = 1, кол-во элементов = 9,обрабатывается 3-й элемент исходного массива;
третий вызов - индекс = 2, кол-во элементов = 8,обрабатывается 5-й элемент исходного массива;
четвертый вызов - индекс = 3, кол-во элементов = 7,обрабатывается 7-й элемент исходного массива;
пятый вызов - индекс = 4, кол-во элементов = 6,обрабатывается 9-й элемент исходного массива;
Если сделаете так:var a = document.getElementsByClassName('hren');
Array.prototype.forEach.call(a, function(e) {
  e.classList.remove('nahren')
})
класс удалится у всех элементов массива
Перевел html-коллекцию в обычный массив.Пример подсмотрел решение тут