Oi Henrique! A necessidade de se criar um serviço nasce quando você precisa compartilhar um mesmo código ou dados entre controllers!
Muitas vezes quem esta começando em Angular faz aquela pergunta de como um controller pode acessar outro. A resposta não é um controller acessar outro, é isolar o código que se quer reaproveitar em um serviço.
Aliás, um serviço pode guardar estado, ou seja, dados e esses dados podem ser acessados por diferentes controllers. É meio atípico se você tem uma bagagem de programação no backend, pois lá um serviço não pode guardar estado. Já no Angular isso é totalmente viável.
Pense no controller apenas como o cara que vai interagir com sua tela, capturar a entrada do usuário e delegar a tarefa mais sofisticada para os serviços.
Sucesso e bom estudo!