, Matheus,
uma função é um código que realiza uma função específica dentro do seu código maior. Normalmente criamos uma função para realizar algo que é feito rotineiramente.
As funções podem receber parâmetros (dados para trabalhar) ou não. No seu exemplo, sua função espera receber dois parâmetros para poder realizar as operações: um valor que será armazenado como peso, e outro como altura.
A função está declarada dentro do código (maior), mas ela só é executada se invocada. Para invocar uma função (chamá-la para rodar) você a chama dentro do seu código (maior) pelo nome dela:calculaImc(59, 1.80);
.
A função então é acionada naquela linha, e seu código (maior), de certa forma, para de funcionar ali, para então rodar a função. Você, já sabendo que ela exige dois parâmetros para funcionar, os envia no momento em que o chama: "59, 1.80".
Sua função então pega estes parâmetros e realiza as operações e instruções dentro dele. No caso ele calcula o imc, depois mostra na tela.
Depois de terminar esta rotina, se houver mais linhas em seu código maior, elas serão executadas na ordem, logo após o calculaImc(59, 1.80);
.