Persistencia. JPA como tal es la especificación (Java Persistent API). Existen implementaciones para esa especificación
http://es.wikipedia.org/wiki/Java_Persistence_API . Hibernate es una de ellas, la más utilizada posiblemente, y va más allá de la especificación, ofrenciendo más cosas. Spring Data es más amplio en el sentido que no se limita sólo a JPA
http://projects.spring.io/spring-data/ .
Parte de negocio son tus reglas de negocio, puede haber herramientas que te ayudan a hacerlas o te digan como implementarlas para que encajen en un framework superior, pero en principio es algo que tendrás que programarte sin ayuda de herramientas. Modelo de negocio por ejemplo es la algoritmica y reglas de un juego de ajedrez.
Structs y JSF son más o menos equivalentes. Structs es más veterano y posiblemente, al llevar más tiempo, más probado o con más posibilidades, aunque posiblemente también más pesado. Igual que con JPA, JSF no es más que una especificación y hay muchas implementaciones, normalmente acabadas en "Faces"
http://es.wikipedia.org/wiki/JavaServer_Faces . JSF es más moderno que structs y pretende de alguna forma ser un reemplazo o alternativa. Elegir entre las implementaciones de JSF, va un poco en gustos. JSF2X no es más que la versión 2.x de la especificación JSF.
Se bueno.