Start here. This is the direct spoken answer to practice first.
Overview
Propagation describes what happens when a transactional method is called while a transaction may already exist.
REQUIRED joins the current transaction or starts one if none exists, so it is the normal default for one composed unit of work. REQUIRES_NEW suspends the outer transaction and starts an independent physical transaction with its own commit or rollback. NESTED normally uses a savepoint inside one physical transaction, allowing part of the work to roll back to that point when the transaction manager and resource support it.