JPA simplifies entity persistence with a standardized ORM programming model. In other words, it abstracts the persistence layer in order to cut dependencies between your application code and ORM providers.
This standardization (JPA) provides you with a way to switch between JPA persistance providers such as Hibernate, OpenJPA, etc.
From Pro Spring 3 (Clarence Ho):
JPA defines common set of concepts, annotations, interfaces, and other
services that a JPA persistence provider should implement (all of them
are put under the javax.persistance package). When programming to the
JPA standard, developers have the option of switching the underlying
provider at will, just like switching to another JEE-compliant
application server for applications developed on the JEE standards.
Regarding your other question
also individually when to use JPA and when to use Hibernate.
JPA promotes modularity at the cost of additional complexity. Whether this trade-off is worth it depends on the complexity of your project.
Hibernate closes the gap between the relational data structure in the RDBMS and the Object Oriented model in Java. This mature and tested library allows you to focus on your business logic using objects and saving time writing boiler-plate code needed to interact with databases.