Hibernate is more rugged, consumes more memory and so can be considered heavier, but under extreme conditions it is more efficient by doing much more Inserts and queries per minute. Use it in projects where you have a robust server and simultaneous access is great.
Toplink and Eclipselink are for simpler projects. They are lighter in memory and great for JPA learning because it will be difficult to lock your machine, but they cannot withstand the trance that Hibernate endures in more critical moments in production server.
This is not just an opinion of mine based on personal experience. I’ve heard the same comments from other programmers and post teachers.
In the link below the author of the post made some tests that corroborate this perception of Eclipselink and Toplink being less robust than Hibernate:
http://terrazadearavaca.blogspot.com.br/2008/12/jpa-implementations-comparison.html
In terms of usage, they all use JPA and if you don’t use any implementation-specific functionality, to swap you’ll only need to change properties in the persistence xml and half a dozen Imports.