Almost everything you listed is pretty simple to do in Magento. The only challenging part is having separate inventory per customer/business. The only really challenging item on that list is separate inventory per customer/business. There's some community efforts to support that well in Magento, but it's not part of the Magento core by default.
I know AheadWorks and a few other extension authors have extensions for multiple warehouse support, but tracking inventory separately for each warehouse/business/customer is going to be a challenge. I've seen it done successfully in Magento 1, but it's not simple.
--Joshua Warren - @JoshuaSWarren on Twitter
CEO,
Creatuity