Eagle Library Management -- Is there a "right way"?
One major problem that prevented proper version control was the binary library format that Eagle 5 and earlier use. I guess you are already aware that they changed the format to plain text XML with Eagle 6.

We use Subversion for version control, but thats just a personal choice. Thanks to the XML format we can now perform diffs and thus following changes became much easier. It is now sufficient to check the changes during the commit, rather than having to make notes about it during development.

Our general approach:
All our libraries share one folder in the trunk. We have one "common" library where all components are clumped together, that don't match the content of one of the other more specialized libraries. From time to time we extract fitting "groups" of components to their own library, cleaning up the common one.
We always check out the whole trunk to our working copy, which resides in a subdirectory of Eagles \lib folder. All files are attributed as "needs-lock" to prevent corruption, but this may no longer be necessary since we could make manual corrections to XML.

Its a good thing to include the general part numbers when writing the SVN logs. So its easy to check the revision history to prevent doing some work twice.   

As a side note: If you require a project specific library that contains all components of a specific board, there is an ULP script that comes with default Eagle installation. It extracts all used components into a single lbr file.

In the end, the internal library management from eagle is just not good and that is something we can't do much about.