I'd start looking at FTDI products which are pretty popular for offloading most of the USB work so that you're mostly dealing with just a serial problem. I would think that they'd be the best place to start your investigation.
One thing that you might not appreciate yet is that "real" USB is a master-slave architecture, so both sides of a connection are not the same. Most microcontroller USB functionality is just for the slave side. You may find yourself looking at USB OTG for implementing the master side.
USB was designed for some amount of simple serial compatability, like with RS-232. I'm unsure if both sides can be peers to just essentially fake a direct RS-232-style serial connection between them. Seems like it might be possible if USB really does provide RS-232 compatability.
As far as MMC-to-MMC, that's kind of a different level of absraction, as you still need a physical way to transfer the data from one interface to another (which could even use USB).
I'd focus on the USB problem/solution if I were you, as that's simpler. However, you'll learn a lot more if you choose the MMC route.
good luck,
-e