Currently the Leonardo has a, what I think is called, a composite USB definition.
It is a serial port (I think it is called a CDC)
It is a Mouse (HID)
It is a Keyboard (HID)
I think that is all but there may be more.
I would also like to add a mass storage ability.
I am thinking about creating a device to log data. I would write this data to an SD card. I would like to be able to read this data from the SD card as though it was a "thumb drive".
I know that I could take the SD card out of my device and load it into my computer and read the data like that. If I do that then the device could not be logging data. I could buffer the data but as we know, Arduinos have VERY little ram.
If I change change log files from time to time then I should be able to move (copy and delete) older log file from the device without interrupting the logging process.
This may be too much to ask of an Arduino and a Raspberry Pi or Beagle would be a better platform. The Arduino is just Simple, Small, and Cheap Affordable. So I would like to use a Leonardo.