Opa!
Calma calma. Quando falar Spring precisa ser específico kkk, existem diversos projetos que integram o ecossistema do Spring, o MVC é um deles, temos o core (injeção de dependências etc), Aspectos, JDBC, Boostrap, Security, MVC, etc, etc, etc...
Depois entra nesta pagina para entender o que estou falando:
https://spring.io/projects
O Spring MVC é action based, sim, está correto, funciona como o antigo Apache Struts, onde tínhamos o DispatchAction que roteava as requisições para as ações mapeadas, mas ainda assim os serviços que você expõe, que contém as ações, são componentes! Componente é tudo que possa ser reutilizável, é apenas um conceito, eu diria que 99% do que você escreve em termos de código é um componente de uma forma ou de outra, é um conceito, não esquente com isso agora.
No caso da sua dúvida quanto às validações do JSF, sim elas sempre serão executadas 100% server side. Lembre-se que todas as suas páginas JSP são compiladas em arquivos Java, não sei se no curso o professor mostra essa curiosidade pra vocês mas o servidor pega todos os seus elementos HTML das suas páginas JSP e converte em objetos Java contendo as propriedades e elementos da página para fazer o "bind" dos dados, para anexar as interações do usuário com à página do browser ao ciclo de vida dos beans, por baixo dos panos o servidor usa objetos java comuns para manipular o que você vê em tela. Tudo que você vê no browser possui um espelho no servidor na forma de um objeto Java padrão, referentes à todos os elementos e tags JSTL que você declarou na página JSP. Quando você realiza alguma validação do próprio JSF essa validação é executada no servidor por meio do acesso dele à essas classes que ele gerou em tempo de execução, é como se ele gerasse o próprio Javascript dele internamente kkkk para manipular a página, um jeito meio chulo de explicar mas fica fácil de entender.
Inclusive no servidor Web JavaEE quando você acessa as configurações do projeto existe uma opção de deixar essas páginas pré-compiladas ou deixar que sejam compiladas em tempo de execução.
Caso você queira fazer validações em Javascript numa página JSP você precisa apenas criar os arquivos Javascript e importar/utilizar esses scripts da mesma forma que faz com uma página HTML comum. Só pense por um segundo que você está fazendo uma pequena "salada" misturando tecnologias que possuem filosofias distintas, cuidado pra não se bagunçar entre validação server e validação client. Como você está no mundo JSF sempre que possível tente seguir dentro da própria tecnologia para facilitar a manutenção.
Já vi muitas páginas JSP com código "macarrônico", tinha HTML puro, tinha tag do JSF, tinha coisas acontecendo por meio de scripts Javascript, tags de bibliotecas de template... enfim, um inferno....
Aprenda sim Javascript, sou suspeito pra falar pois tenho me dedicado muito ultimamente em dominar esse mundo JS, mas tente aprender bem o JSF pois a filosofia dele vai te ajudar a entender o que está sendo feito hoje em dia só com JS. Por exemplo, ReactJS é uma biblioteca JS que trabalha de forma um pouco parecida com o JSF, tendo suas páginas também sendo renderizadas no servidor! Já o AngularJS roda 100% no client, mas sabendo o JSF você consegue fazer essas comparações que te ajudam a entender mais facilmente as novas tecnologias.
E aprenda Java, aprenda bem. A minha curva de aprendizado no JS tem sido gostosa pois conheço bem Java e o JS tem muitas semelhanças com ele... aquilo que é diferente entre ambos tb é fácil de entender porque tenho um ponto de comparação e por aí vai...
- Resuminho: Validação JSF 100% server-side, Scripts Javascript 100% client-side.
Abraço, espero que agora esteja mais claro pra você suas dúvidas. No mais somente a prática e a experiência mesmo para ir clareando a sua mente. Com o tempo você fica craque!
Até mais!