Boa noite, estou com várias dúvidas quanto aos temas do tópico. Não estou conseguindo entender onde começa um e outro o outro termina.
O Servlet que cuida das requisições web? O EJB roda dentro do servlet? O JPA é uma api que cuida da persistência de dados com o banco de dados? E o primefaces? seria um bootstrap do Java?
Servlet = ponto de entrada para requisições HTTP. O servidor converte uma stream de bytes (a requisição) para um objeto e te entrega, através do Servlet, esse objeto e outro que é onde você vai escrever a resposta. No final, ele pega a resposta e converte em stream de bytes;
JPA = mapeador objeto/relacional, facilita a comunicação com banco de dados;
JSF = templating language para montar páginas HTML;
PrimeFaces = tema + funcionalidades extras para JSF;
EJB = o container de aplicação (o programa que executa o seu programa) gerencia o ciclo de vida de objetos (criação/destruição/reuso) para você.
Pesquise pelos termos em negrito (de preferência em inglês) para descobrir mais!
JPA é uma especificação. Hibernate é uma de suas implementações disponíveis no mercado. JPA não existe de forma concreta, é só uma espécie de contrato que o Hibernate (e os outros providers) segue.