A função forEach() é uma função que recebe uma outra função como parâmetro, denominada "callback" por ser "chamada de volta". A função callback é executada uma vez para todos os elementos de um dado array.
No forEach(), a função callback recebe como parâmetros os valores (ou "value") e a posição (ou "index") de cada elemento de um array.
A pegada que pode gerar confusão é que você é quem determina os nomes que representarão esses parâmetros da função callback.
No exemplo que você mostrou, o parâmetro "contexto" está representando cada um dos elementos "<button>" do array "botões", e não possui nenhuma conexão com o parâmetro "contexto" da função alterarContexto. Você poderia alterar o nome "contexto" dessa função para qualquer outro sem prejudicar o funcionamento do código.
Para entender melhor, dê uma olhada nesse bloco:
//definindo a lista de "botões" a, b e c
const botoes = ['a', 'b', 'c']
/* chamando o forEach, que irá executar uma função chamada "callback".
A função "callback" recebe como parâmetros o valor de cada elemento e
sua posição no array.
Nesse exemplo, o valor é representado por "valor", e a posição, por
"posicao".*/
botoes.forEach(function callback(valor, posicao) {
console.log(`${posicao}: ${valor}`)
//Essa função imprimirá "0: a", "1: b" e "2: c".
Espero ter ajudado!