so in nutshell we can say that in case of @PersistenceUnit developer needs to worry about releasing the resources acquired by EntityManager and in case of @PersistenceContext container do this for us.
yes.. basically that. and you can explicity join a container-managed JTA transaction like this:
EntityManagers you get via @PersistenceContext are typically called
Container Managed Entity Manager because the container manages things for you.
while EntityManagers you get via @PersistenceUnit / entityManagerFactory.createEntityManager() are called
Application Managed Entity Manager because you'd have to manage certain things in your application code.