Olá, Levi!
Entendo que a lógica de programação pode ser um desafio no começo, mas com o tempo tudo vai ficando mais claro.
Vamos lá, quando estamos lidando com loops, como o while, precisamos de uma condição que eventualmente será falsa para que o loop pare. No seu caso, a condição é contador > 0. O loop continuará executando enquanto essa condição for verdadeira.
A "decrementação" é uma maneira de alterar o valor de uma variável, neste caso, diminuindo seu valor em 1 a cada iteração do loop. Quando você vê contador--, pode ler isso como "diminua o valor de contador em 1".
No exemplo do exercício, o contador começa com o valor de qtdNumeros (a quantidade de números que o usuário quer calcular a média) e a cada número que o usuário insere, o contador deve ser decrementado em 1 (contador--). Isso faz com que, eventualmente, o contador chegue a 0 e a condição do while (contador > 0) se torne falsa, parando o loop.
Vamos ver como ficaria o código com a decrementação:
let qtdNumeros = prompt('Digite a quantidade de números para o cálculo da média:');
let soma = 0;
let contador = qtdNumeros;
while(contador > 0){
let numero = parseInt(prompt('Digite o numero:'));
soma += numero;
contador--; // Aqui está a decrementação
}
let media = soma / qtdNumeros;
console.log(media);
Com essa alteração, o código agora funciona como esperado, calculando a média dos números inseridos pelo usuário e evitando o loop infinito.
Bons estudos!