Fala Gabriel, tudo bem?
Sobrecarga é um conceito importantíssimo e amplamente utilizado quando estamos falando de linguagens de programação orientada a objetos.
Sobrecarregar um método nada mais é que a maneira comum de implementar o polimorfismo. Um usuário pode implementar a sobrecarga de métodos definindo duas ou mais funções em uma classe compartilhando o mesmo nome. C# consegue distinguir os métodos pois eles tem diferentes assinaturas. Ou seja, os métodos podem ter o mesmo nome, mas com uma lista de parâmetros/argumentos diferentes (ou seja, o número de parâmetros, ordem dos parâmetros e tipos de dados dos parâmetros) devem ser diferentes, caso contrário daria um erro de compilação, pois não teria de fato nenhuma diferença entre dois métodos com o mesmo nome e os mesmos argumentos (na mesma ordem).
Métodos sobrecarregados são diferenciados com base no número e tipo dos parâmetros passados como argumentos para os métodos. Você não pode definir mais de um método com o mesmo nome, ordem e o tipo dos argumentos. Daria um erro de compilação. Importante: o compilador não considera o tipo de retorno ao diferenciar o método sobrecarregado. Mas você não pode declarar dois métodos com a mesma assinatura e tipo de retorno diferente. Se ambos os métodos tiverem os mesmos tipos de parâmetros, mas diferentes tipos de retorno, então isso não é possível.
Abraço e bons estudos!