A looooong time ago I wrote a generic OBDII scanner for mac os x that used the ELM327 adapter. It didn't offer anything above the software that came with it, I just wanted a mac client.

If you're just starting out I'd suggest something like that as a project, talking to the ELM is almost exactly like talking to a modem (if you've ever done that). There are some open source projects about such as pyobd that you could use to refer to for the specific commands etc. to get the ELM going, then the rest is up to you. But you'll find loads of lists of standard OBD codes etc. all over the web.

After that... well, then it gets a bit more complicated but this would probably make a nice little starter project and it wouldn't necessarily have to be crap either - take a look at e.g. FORScan Home which uses the ELM interface. You'll be limited in what you can ultimately achieve with the ELM but it's a good start IMO, once you get that far then you can start looking at manufacturer specific protocols, k-line, can etc. etc. etc.