The bootloader is a small piece of code that you burn into your virgin PIC part once, with a typical device programmer, which then allows it to be programmed thereafter via the standard serial port pins (RX & TX). My favored method.

Alternate methods of programming PIC devices include the use of the standard Microchip ICSP (In-Circuit Serial Programming). Which uses a specific set of pins (PGC & PGD & sometimes PGM) to program the device.

The bootloader method makes use of the standard PC serial port, and thus requires level translation hardware such as a MAX232 chip.

The ICSP method requires that a device programmer be in-line between the PIC and the PC, and that some special circuit accomodations be made on your circuit board to isolate the PGC & PGD & MCLR pins from the rest of your circuit.

Both methods are fairly transparent to the user and allow very rapid download of code during development.

One down side to relying on bootloaders, is that sometimes they are un-available for a specific device and new devices. In which case the ICSP method has to be used.

The ICSP method will always work because it is built-in to every PIC device.

The ideal solution, in my opinion, is to provide pads for both on your PCB, populate the parts as required, and you have the best of both worlds.