However, I do admit the loss of the 2G upgrade changes things a bit, and I would like to see how Apple handles it. The easiest answer is that the App Store allows one to select devices that are incompatible with certain builds, however I would love to see a universal binary situation supporting the old OSs much like PPC/x86 or iPhone/iPad apps.
When you open the market on a device it is pre-filtered to apps that work on your handset with your features, in your region, etc. Users don't have to read through and sigh at disclaimers.
Apps can even pre-filter by your screen size, whether you have a GPS, and so on.
The situation with Android is very similar to the Windows landscape: Lots of apps work perfectly fine back to Windows XP or before. Yet occasionally an app demands something particular on the newer variants so it becomes, for instance, Windows Vista+. Same idea with Android. That's just life of a quickly evolving ecosystem, and they've managed it well.
And remarkably many of the improvements have been ecosystem enhancements that benefit even apps target obsolete versions. The truth is that even today the platform API was so robust back on 1.6 (that was really the pivot point) that brand new apps still primarily target it.
At the OS-version level, you can build applications to take advantage of the latest OS, but also be compatible with earlier versions (that’s how the universal applications for iPad, iPhone, and iPod touch work—their base SDK is 3.2, while their target is set to 3.1.3 or below). Additionally, it’s fairly easy to detect whether or not a certain API is available at runtime.