Usos de 'for' em Java

Eu sou relativamente novo em Java e em outra pergunta do Stack Overflow sobrepara laços uma resposta dizia que havia dois usos de para em Java:

for (int i = 0; i < N; i++) {
}


for (String a : anyIterable) {
}

Eu sei o primeiro uso de e tenho usado muito, mas eu nunca vi o segundo. O que é usado para fazer e quando eu usaria isso?