In my opinion the best practice is to compile with the Android 1.6 sdk and set the minSdkVersion to 3 in the manifest.
I say this based off of the recommendation of Dianne Hackborn (the user named hackbod that commented on the accepted answer) in this thread, she is a Google employee that works on the Android source itself.
Basically there are quite a few Android 1.5 SDK devices out there so compiling with the Android 1.5 SDK would provide support for more devices with the 1.5 SDK, 1.6 SDK, 2.0 SDK, or the 2.1 SDK but there are devices that require the 1.6 SDK such as the HTC Tattoo so compiling you app with the 1.6 sdk but setting the minSdkVersion to 3 allows for the majority of devices to be able to use your app.
If you do as the accepted answer says and compile with the latest 2.1 SDK then you are missing out on a large amount of users. Applications compiled with the 2.1 SDK can only be used by devices that have the 2.1 SDK or higher so basically you are limiting your users to those that own a Google Nexus One at the moment.