Boa noite, tudo em paz?
Sobre forEach, esta é uma função especial utilizada para percorrer um array até o final. No momento em que é chamada, ela recebe três informacoes essenciais sobre o array que a invocou: Seus valores, seus índices e o array completo, exatamente nessa ordem.
Estas informações que o forEach obtém do seu array podem ser passadas para sua função interna, para que seja executado algum processamento. Não é obrigatório informar estes argumentos mas caso seja informado, é importante seguir a ordem:valores, índices, array.
No exemplo que vc citou, foi enviado para a função apenas o primeiro argumento (valores). Portanto, ao executar o console.log, a função sabe exatamente as informações que devem ser impressas.
Sobre arrow functions (=>), é uma forma simplificada de declarar funções anônimas. As regras são: A palavra function deve ser removida, argumentos ficam contidos em parêntesis - se houver apenas um argumento, os parentesis podem ser omitidos -, o corpo da função anônima estará entre chaves, após a seta =>
(value) => {
}
Caso sua função só tenha uma linha, chaves e a palavra return poderão ser omitidos.
value => console.log();