краткое описание:
1)в first хранится указатель но вершину списка(first = newlink;) здесь мы создаём новый элемент и сохраняем указатель на него.
2) newlink->next = first; - тут сохраняется предыдущая вершина списка
3) link* current = first; тут мы берём вершину списка и просто копируем в другую переменную
4) current = current->next; - из пункта 2) ясно что тут хранится указатель на предыдущую вершину, другими словами на предыдущий элемент.