Se for utilizar a arquitetura de microservice sim.
Ai vc tem que separar todas as responsabilidade. Por exemplo, você tem um projeto onde tem produtos, pedidos, clientes e etc.
Cada um seria um projeto separado, porém o que acontece é que você tira a complexidade das regras de negocios do projeto grande e coloca ela p/ fora em vários microserviços. No começo é uma maravilha, pois vc desenvolve rapido os microserviços, mas depois o gerenciamento disso, por fora é complicado.
Pensa comigo, cada projeto tem seu banco de dados unico e um tem que conversar com o outro, pois não pode ter um pedido, sem cliente ou produto. Vc entendeu?
Outra coisa é o gerenciamento de autorização e autenticação, pois também deve ser um microserviço a parte.
No back-end em Spring você esquece a view, pois isso é responsabilidade do Angular. Então você vai ter um projeto em Spring e você usou um FatJar ou esta rodando em um TOMCAT ou JETTY da vida, levantou o servidor e ele esta la rodando. Em outro projeto você vai ter o Angular rodando.
Você não vai utilizar JSP, JSTL, nada disso. Uma dica p/ te facilitar a vida, utilize o Spring-Boot. No site:
http://start.spring.io/
Vc vai criar um projeto em Spring, que vai ter a dependencia Web que ja vem com uma Full-Stack para o desenvolvimento web com um container embutido do tomcat e o resto das dependencias que vc vai utilizar, como Spring Data JPA por exemplo e por ai vai.
Importa o projeto p/ sua IDE, e pronto, vc ja tem um starter do seu projeto.
E sim, seria um aplicação Rest, usamos a definição Resful, quando usa API atingi todos os niveis do modelo de maturidade Richardson (Nivel - 0, 1, 2, 3). O último é quando ela expoe os HATEOS.
Ja o Angular, quando estou desenvolvendo com o AngularJS eu utilizo lite-server que ajuda um pouco.
Então pense comigo, você tem em um lugar rodando seu back-end e em outro seu front. Separados e seu front, vai apenas consumir os endpoint que sua API Rest esta expondo.