It works great with a bootloader and codeprotection together. It is even possible to encrypt the hexfile into jibberish on your PC and later letting the bootloader de-jibberish it while flashing it. This way the code is safe all the way (depending on what encryption used) and if you use a PIC that is safer (i.e 18 series).

With codeprotection you can not read or write with an external programmer but the software inside the PIC (loader) can always erase and write in the codespace.

This can be done PIC to PIC or I2C or serial or what ever kind of way....

/me