Code readers are great. I like mine. But would never spend the cash that the typical car parts place wants for a decent one. Heck, those places (Autozone, Advanced Auto Parts, O' Rileys) will pull your codes for free if you just ask.
That said, they are not the end-all/be-all for diagnostics. Its amazing how much crap can go wrong with the engine and not even throw a code. I had a erratic idle prob for months and not one code was thrown.
BTW: If your check engine light is not on, you are NOT throwing any active codes. Provided the check engine light and computer are working properly, no active codes are stored if the CE light is off. There can be "pending codes" (intended to store codes that are not deemed serious enough to report unless repeatedly detected) and "historical codes" which is simply a history of codes thrown since the last reset, but those are largely academic, and a decent code reader can pull those up for you as well.
I have a cheapo code reader from ebay I got for 40 bux that sends codes and real-time engine data direct to my android based phone. Its a no-brainer if you already have a droid, and the software is free.