Start here. This is the direct spoken answer to practice first.
Overview
The first-level cache is the persistence context itself; the second-level cache is optional shared infrastructure.
Hibernate's first-level cache belongs to one persistence context and is always part of normal entity management. It guarantees one managed instance per entity identity in that context and can satisfy a repeated identifier lookup. The second-level cache is optional and shared across persistence contexts through a configured cache provider. It can cache entity or collection state beyond one transaction, subject to the chosen concurrency strategy.