I was wondering what does a boot-loader do, there is one USB Bootloader for the PIC micro-controller and I was wondering as to what its purpose is. How is it different from creating some HID device from the PIC for example? Surely there is no OS running on the PIC than whats the whole point of this "bootloader"?
The bootloader lets you reprogram the PIC from the USB port, taking advantage of the ability of the controller to write into its own program memory. Usually, it checks to see if some criteria is met, like some bit being set high, before entering the programming mode. It will shift your program into higher memory space to accommodate the boot loading protocol at the normal start vector.
This is the way to go if you see a need for something like an end-user updating the firmware on your device without special programming hardware.
Serial port boot loaders are a bit easier to learn, as you don't have to deal with the USB stack.