I'll try to answer, but do not trust my words 100% - I'm not an expert.
EJB 2.1 its old so do not learn old technology that for sure.
EJB 3.0 is a standard, it was made by Sun, hibernate, jboss etc (check sun page for details). But in creating EJB hibernate as I know was involved a lot of. But hibernate also made it's own API, annotanions, but almost the same.
Jboss implementation is on top of hibernate engine. That means that if you call some of ejb function or use some ejb annotation you in reality call hibernate.
But EJB 3 does not have some features which hibernate have.
So normally I code everything using EJB 3, but I need some extra feature or something I'm using hibernate annotations or functions. You can always switch from EJB layer to hibernate (example:
import org.hibernate.Session; import javax.persistence.EntityManager; @PersistenceContext (unitName="blabla") protected EntityManager em; Session session = ((Session)em.getDelegate());