As far as I know, nobody has published a full integration with Salesforce for MODX. So this is indeed a big project.
Contact forms would be easy. Salesforce has a web-to-lead feature that allows you to post to Salesforce from an external form, so you could just make the form in MODX and have it post to Salesforce. If you need to get the data into MODX as well, you could process the form with FormIt and re-post to Salesforce using a hook - I have a hook for that here:
https://github.com/freejung/Webinex/blob/master/core/components/webinex/elements/snippets/snippet.resubmit.hook.php
The other things you mention will be quite a bit more involved.
You can find lots of information on using the Salesforce SOAP API in PHP in general. So one way to get started would be to get a SOAP client class working in PHP that can pull the data you need out of Salesforce.
Then you'll need somewhere to put the data in MODX. I would store the contact data in the users table. If you have additional data that doesn't fit in existing user fields, you could use extended user fields, or make a custom table linked to the users table. For product info, you may want to write an Extra with custom tables to store the data, or use an existing ecommerce Extra. You could store the products as resources but I wouldn't recommend it unless you have a small number of products, as the performance would be bad with lots of products.
Anyway, once you have a place to put the data and a client that can pull the data, actually getting the data into MODX should be pretty straightforward using the standard XPDO methods to create your MODX objects, set their values and save them.