I have been working with the salesforce.com remote api's for some time now. A couple things I have noticed.
1. If you are doing any real work with it, use the partner API. It
isn't as "pretty" as the enterprise api, but it is far more flexible and
doesn't require the WSDL to be updated all the time.
2. There is no "push" capability in their API's. So you have to resort
to polling for changes. This works, but is not ideal. Rumor has it
that they will have some ability to push in the next release. I hope so.
3. It is a pretty powerful API. You can do a ton of things with it and
get at pretty much anything.
So, for the most part, I have been working in Java for talking to Salesforce.com. It is the most well documented of the api's so far and the one directly supported by Salesforce.com.