Not another shop module! Ha so many popping up now. The short answer to your version question is no (that I'm aware of). You can do LeftAndMain::CMSVersion() to return the version information but this may not always be set. A common pattern is to check for a class which has been added (i.e class_exists('DataList') ? "3.X" : "2.X");
3.0 does have quite a few major changes (more template functionality) and new ORM which would make your code potential much cleaner in 3.0 so depending on how complex it is, you may find it easier with 2 branches.
Yes - not-another-shop-module! I'm not releasing to the modules list, it's just something I use on a few website of my own for simple client shops, and I customise it to their needs.
At this stage there are only a couple of parts that need to be different for SS3, so I'll try and use your suggestions of checking if classes exist. As things move more to SS3 I'll take advantage of the extra stuff, but for now, i'm just trying to make things work with as little effort as possible!