GoForSmoke:
I never needed a library to use a process-state event-driven real-world approach.
+1
I use the servo library because it has a limited remit, and it seems to work.
In general, however, I am wary of libraries because their inner workings are not obvious (unless I spend a long time studying the code) and in the open-source world comprehensive documentation is as rare as hens' teeth - particularly documentation about the rare complications that might arise.
Also, because the Arduino has limited resources (e.g. timers and interrupts) it is easy to get conflicts between libraries that are not documented.
Finally, if it doesn't work it's much more comforting to know it's my fault. It makes it much easier to fix.
...R