1. You would create two store fronts, each with its own theme, catagories, products, prices, ect (all handled through the admin panel. The same product and category can be in both stores or just one). Normally for this kind of setup, the second store front is either just a sub-domain of the original or a sub-directory but can be a completely different URL if you would prefer.
Then you create two customer groups. The first will be general and when they go to www.yoursite.com they see the default store front.
The second group will be redirected to the second store (The type of redirect depends on how you have the second store setup). Depending on your needs, you could also require the user be logged in to see the second store, so if someone just tries to go to the URL, it will send them back to your login page.
There is some technical aspects of this and you will need to be familiar with coding and server settings (ex: symlinks if the second store is a sub-domain).
You can see this sort of thing being done at www.bludot.com (general store) and then go to www.bludot.com/b2b whch is the wholesale side.
2. Magento offers downloadable products that you can sell. To create a way for customer to be able to buy and sell among themselves would require extensive development time and would be completely custom. You may be able to find a service that you can integrate into Magento, but I don\\\’t know any off hand.
3. Magento can handle this by default, with the exception of the shared cart. Search MagentoConnect though, there are a few extensions that handle shared cart functionality at fair prices. There are also extensions that can improve the sorting and give you much more control over how the search is performed.
I apologize for the vague answers. The requirements are very wide though and can be done in several ways depending on what you want/need and how you expect to achieve those goals. If you aren\\\’t technical and have a budget, I would suggest finding a Magento Partner to assist in at least 1 and 2 as they can get very technical.
Best of luck!