Hola muy buenas,
bueno voy a intentar aclarar un poco esta duda, Iterator lo que hace es una copia de una coleccion de Objetos, en este caso de ArrayList <String> listaDeNombres.
A partir de aquí, para leer cualquier objeto tipo String dentro de la copia Iterator<String> it,
debemos usar it.next() que nos devuelve el siguiente objeto (el primero en este caso).
Como no hay una función tipo return() o last() o algo que haga volver atrás, para poder manipular o imprimir ese elemento primero, el capitulo te explica que lo guarda en una variable temporal, tmpAnalizando = it.next(); .
De esta manera con hasNext() comprueba si ciertamente hay próximo Objeto (o el anterior era el último) y si necesitas manipular un objeto, compararlo, mostrarlo, lo que sea, se debe usar una variable igualandola a Iterator.next().
Espero te lo haya aclarado un poco más. Saludos.