Hi,
Let's take example that you want to have a MSD device application, and you want to have a bootloader (in this case is DFU) to upgrade your application (like you need to fix bugs in MSD application).
So it will be like this:
1. The first time when you have just flashed DFU bootloader code into the board and plug it into PC. Because there is not any valid example exists yet, the bootloader is run and you will see a composite device (with DFU and HID) on you PC.
2. You download your MSD application to board using DFU GUI, the MCU switches to DFU mode to send/received/flash the chip, then it is reset to run MSD application. At this moment, you see on your PC only the MSD device exists. There is not any DFU or HID.
3. You turn off then turn on your board, the bootloader check and see a valid application (MSD app) so it move to that app immediately. You will not see DFU and HID on your PC.
4. If you want to upload new firmware, you have to tell the MCU that you want to stay at bootloader (by pressing some keys when power on for example (the AN should mention these for boards they took as examples, otherwise user cannot know which switch need to be pressed)). If do like this, you will see only DFU and HID exist, you will not see your MSD app on PC.
You don't need to care about the HID code, it is there to satify DFU specification only. They don't use that for any useful trasaction. You can delete the code in HID callback function to save some bytes of flash 
I see the DFU (for microcontroller) is more suitable for usecases in which you don't need to change the whole your app but you want to change an amount of data (like change data for Freescale logo to your company logo, change different font, string.. for different markets)...
The MSD device bootloader will be more convenient and faster than DFU I think. Let's wait for that to be released...
Regards