Allan, essa sua dúvida é bastante comum e sempre gera dúvidas e debates nos fóruns de Java.
Como as aplicações estão ficando cada vez mais complexas, é interessante criar separações nas aplicações, de modo que os programadores possam alterar determinados blocos de código (seja por mudança na política da empresa, morte da tecnologia, adaptação para novas tecnologias ou qualquer outra razão) sem que seja necessário mexer em toda a aplicação.
Se você já programou em PHP, deve saber a salada que alguns programadores fazem, muitas vezes acessando banco de dados (Model) diretamente da tela (View), fazendo renderizar ou não determinados blocos de código (Controller) dependendo do retorno do banco.
O MVC não é "bala de prata", ele não resolve tudo, mas ele se mostra de fácil compreensão. Você pode perceber que se sua empresa mudar a tecnologia da camada de apresentação de JSP para JSF, por exemplo, você não precisa alterar toda a sua aplicação, em especial as camadas Model e Controller. Basta alterar a camada View. Essa separação ajuda bastante na hora desse tipo de alteração, bem como na compreensão do sistema.
Uma espécie de "diálogo" entre as camadas na requisição de uma página seria mais ou menos assim:
View: passa para o Controller os dados de login de uma página.
Controller: pega os dados de login e passa para a camada Model validar os dados.
Model: verifica se os dados passados pelo Controller estão cadastrados, corretos, etc., depois manda a resposta de volta para o Controller.
Controller: chama a camada View (informando qual página deve ser exibida) de acordo com a requisição do usuário.
View: renderiza a página após o login para o usuário.
Bom, essa foi uma explicação simples, espero que tenha ajudado a compreender um pouco mais. Se tiver alguma outra dúvida, só postar.
Abraço