The Android SDK has pretty detailed information about the contact provider - everything that is supported is described in detail here. I assume that your application will only be 2.0: if you want to also support older Android phones, you basically have to do the same job twice and use the old contacts API. Again, no matter what the (old) documentation says, it is supported there.
Since the content provider is located in the ROM, the modified applications do not use the contact provider — they have their own content providers on top of the existing ones to handle all additional fields. For example, the Hero has its own content provider with "events" for contacts, and they are the property - your best bet is to get the root phone and reset your SQL databases using adb.