Olá, James.
No primeiro caso, você está trabalhando com uma implementação antiga do Iterator, da época que ainda não existia Generics. Esse iterador trabalha com coleções de Objects, o que traz a necessidade de você fazer casting para cada elemento.
Iterator iterador = letras.iterator();
while(iterador.hasNext()) {
Character letra = (Character) iterator.next();
}
Já no segundo, com o uso do Generics, você está explicitando que a sua coleção é de apenas de um tipo específico, o que tira a necessidade de realizar o casting.
Iterator<Character> iterador = letras.iterator();
while(iterador.hasNext()) {
Character letra = iterator.next();
}
No seu exemplo, você pode usar qualquer um que não terá diferença, mas em códigos mais complicados, ter de se preocupar com casting é uma dor de cabeça.