The current (as of Dec 2008) iPhone SDK allows me to pick between 3 versions when I want to build an app: 2.0, 2.1, 2.2. -- I\'ll ignore 2.1 below.
My assumptions:
In my testing, if you use 2.0 you can't make use of the application badge functionality - that appears in 2.1 (so you may need to at least use that level)
Tim
You can use the iPhone OS 2.2 SDK and still compile for iPhone OS 2.0; the way you do this is the same as for Mac OS X. The SDK you use determines the most recent version of the OS you want to use API from, while the Deployment Target you use determines the least recent version of the OS you want to run on. Both of these should generally be set at the project level in Xcode.
So you can build your software against the iPhone OS 2.2 SDK and, when running on devices with 2.2 or later installed, use 2.2 features. But you can set its Deployment Target to 2.0 and not use 2.2 features when running on a device with a pre-2.2 operating system installed and your application should work fine.
I'd pick option #1 - compile it to 2.0. This is what we do for our app. There are still a lot of people running the old 2.0 O/S and if you compile to 2.2 your app won't run on their device.
That said, if you develop your app and run into a bug and find out that it's been fixed in a later firmware version, you may not have much of an option unless there's a workaround. There are also new features added to each new version although I do not know of a comprehensive list of what those features are (at an API level).