In regards to the USB errors, I suspect the same thing that Geovani suspects. There is likely something in either the MSD or CDC driver that is not responding at all to the host request type, or that is stalling instead of failing on the request. I would suspect the MSD driver over the CDC driver, specifically because I've seen the CDC driver work many times under windows as a CDC-only driver. (Unless the CDC driver when used in the context of a composite device is the issue). The next step would be to look at the MSD code and see what commands/requests are being sent, if or where they are being handled. I can take a look at this...unless your really board and want to dig into it...
In regards to the debug output logging. The output for those demo projects is going to one of the serial ports on the STM, so you'd want to hook up a serial to USB converter and open minicom (in linux) or putty (in windows) to view the output. There is probably a way to feed that serial data stream into eclipse, but I've never investigated it. But by default, I would not expect it to show up in eclipse.
In regards to FS vs HS, in this case, it really wouldn't make an observable difference in speed between the two. The speed differences really show up when doing large volumes of bulk data transfers.
In regards to booting off the device, I'm not sure if, or how well, you will be able to boot off a USB composite device. The whole "composite" thing seems to be challenging even for OS's, let alone BIOS's. The spec has been around for maybe a decade? but it's only the past 3-5 years that the mainstream OS's have really supported it.
It sounds like the USB device descriptor was setup wrong, or the way the callbacks were configured was not consistent with how the descriptor was defined. USB device descriptor packing is kind of a pain, and the various endpoint definitions in the descriptor have to match up with how the USB endpoints are configured in the code. If you just changed the descriptor, and nothing else, or changed it in an incorrect manor, I would be skeptical that it would work at all... There are various relationships between different structures and fields in the descriptor, and you have to get them all right in combination with each other. http://www.usb.org/developers/docs/ has all the details, of which there are a few thousand pages, because USB is way to complicated IMHO...