Дело в том, что по конструкции
std::_Fwd_list_const_iterator<T> cur
компилятору понятно, что перед cur -- имя типа. Во втором случае что такое const_iterator можно будет понять только в точке инстанцирования cur. Поэтому компилятор просит добавить строгости, в виде ключевого слова typename. Всё правильно делает.