Oi, Laura! Que ótimo ver você praticando e querendo entender direitinho o for each.
Vamos destrinchar o seu exemplo de forma bem didática:
int[] valores = {20, 15, 19, 45, 13};
int soma = 0;
for (int valor : valores) {
    soma += valor;
}
Primeiro:
O for each é uma forma simplificada de percorrer todos os elementos de um array (ou de uma coleção, como uma lista). Ele basicamente diz: "Para cada elemento dentro desse conjunto, faça algo com ele."
 Segundo:
A estrutura é assim:
for (tipo nomeVariavel : conjunto) {
    // faça algo
}
- int valor— É a variável temporária que representa cada item do array. No primeiro loop,- valorvai ser- 20, depois- 15, depois- 19... e assim por diante.
- :(dois pontos) — Lê-se como "em" ou "para cada um dentro de". Ou seja,- valor : valoresquer dizer "para cada valor dentro de valores".
 Terceiro:
Sim! Você poderia fazer isso usando o for, assim:
public class SomaValores {
    public static void main(String[] args) {
        int[] valores = {20, 15, 19, 45, 13};
        int soma = 0;
        for (int i = 0; i < valores.length; i++) {
            soma += valores[i];
        }
        System.out.println("Soma: " + soma);
    }
}
Essa forma também funciona perfeitamente. A diferença é que no for each você não precisa se preocupar com o índice (i), o que deixa o código mais limpo e fácil de entender quando você só precisa acessar os elementos, sem se importar com a posição deles.
Então resumindo:
- for (int valor : valores)= "Para cada- valordentro do array- valores, faça o que está dentro do bloco de código".
- Os :significam "em".
- É ótimo pra quando não precisa do índice.
Continue praticando! Você está mandando super bem!
   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
   Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!