@Chris, I was in exactly your position an year and a half ago. My project was a complete rewrite using Liferay 6.1, and some of the features required understanding its deepest internals (though this may not be the case in your project). From that experience, my tips are:
1. Portlet programming is quite different from regular servlet programming, in just about everything (concepts, deployment, lifecycles, URL handling, etc.).
2. If it's feasible and the decision is in your hands, use the latest liferay 6.x versions for your project. Shun 5.x - they're a pain.
3. My recommended book is "
Liferay in Action".
If your project/company prefers spring stack, then "
Portlets in Action" is very useful to understand Spring portlet MVC.
4. I would recommend using Spring Portlet MVC, rather than the plain portlet APIs.
5. If your project plans on doing a lot of customization of liferay core or out-of-the-box portlets bundled into Liferay, then I would recommend you get *very familiar* with liferay source code structure. Documentation is minimal, and so understanding behaviours involves trawling through its source code. A good editor with "find in files" features is priceless.
6. If your portlets are UI intensive (complex UIs and user interactions), then I would recommend staying away from their Alloy UI framework. It's good feature wise, but documentation is not good at all. Trying to implement complex UIs with alloy UI will involve higher implementation effort. Stick to jquery or vaadin (which liferay supports well).
7. Authorizations (roles and permissions) behaviours take sometime to understand. If your project relies on fine grained permissions, experiment a lot with roles and permissions and their influence on various liferay features before starting any implementation.
8. Overall, liferay is as much a framework as a portlet container. It likes to pigeon hole applications into its own world view. Things are easy if you can fit in your UI and interactions into the framework's world view. Effort required shoots up if you want to customize anything heavily, however. Liferay makes customizations possible at every level, but beware of the effort involved. Prototype things if such customizations are involved.