Oi, Iuri! Tudo bem?
Para compreendermos o que está acontecendo inicialmente precisamos compreender a função do loop 'for' no nosso código e o que está de fato acontecendo dentro dele. Dessa maneira, segue abaixo  o código comentado de forma que possamos entender a funcionalidade de cada linha de código:
function tocaSom(idElementoAudio) {
    document.querySelector(idElementoAudio).play();
}
const listaDeTeclas = document.querySelectorAll('.tecla');
// Este é um loop 'for' que percorre a lista de elementos com classe 'tecla'.
for (let contador = 0; contador < listaDeTeclas.length; contador++) {
    // Para cada elemento na lista:
    // Armazena o elemento atual em 'tecla'.
    const tecla = listaDeTeclas[contador];
    // Extrai o nome do instrumento associado à classe do botão.
    const instrumento = tecla.classList[1];
    // Cria um seletor único 'idAudio' para o elemento de áudio correspondente.
    const idAudio = `#som_${instrumento}`;
    // Define um evento 'onclick' para o botão atual.
    tecla.onclick = function () {
        // Quando o botão é clicado, essa função é executada:
        // Chama a função 'tocaSom' com o 'idAudio' específico deste botão.
        tocaSom(idAudio);
    }
}
Ou seja, o loop for percorre a lista de elementos com a classe .tecla, e para cada elemento na lista, ele extrai o nome do instrumento associado a ele, cria um seletor único para o elemento de áudio correspondente e atribui um evento de clique ao botão. 
Dessa forma, quando o botão é clicado, o evento onclick acontece, executando assim a nossa função tocaSom, chamada com o idAudio específico da tecla clicada, permitindo que o som associado a essa tecla seja reproduzido. Isso permite clicar em qualquer botão em qualquer ordem para tocar os sons corretos.
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição! 
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓