pensa assim, você executa o código da função e quando chama um return é semelhante ao break para parar um loop, porém ele além de parar a execução do código da função ela também retorna um valor, o tipo desse valor tem que ser o mesmo da função chamada.
olhando para seu código, você chama a função soma() ela vai fazer o que foi mandado ela fazer e vai retornar um valor. esse valor vai ser guardado na variável que você criou, que no caso é um int total.
Normalmente o que os iniciantes confundem muito é a variável criada na função e a variavel criada no main.
As variáveis com nome total são diferentes, a que está dentro do main é uma variável e a variável que está dentro da função soma é outra. E você está retornando o valor e não a variável.