Todos los pics autoprogramables permiten que se haga un bootloader. Si bien la posibilidad de autograbarse se usa para grabar "datos" en memoria de programa, también se puede hacer para que el pic se autograbe a sí mismo.
Un bootloader como bien te han dicho aquí es un programa que permite autoactualizar al pic al inicio del software, de ahí la palabra "boot" y "loader". Boot es un término informático que hace referencia al "arranque" del sistema. "Loader" significa cargar. Con esto un bottloader es un programa que carga "algo" al arrancar el sistema (que en un pic sería al encenderlo o resetearlo).
Ese bootloader se puede comunicar con el exterior de varias formas, tan bastas como la imaginación de cada uno. Ejemplo: Usart (el más usado), usb, spi, can bus, psp, uart por software, etc.
La ventaja de los 18F frente a los 16F es que permiten que hagas un bootloader y que por diversas razones la región que ocupa el mismo no sea leída y/o sobreescrita.
La protección de que no sea sobreescrita es para evitar que por accidente el bootloader se autoborre. Para evitar esto está el
WRTB: Boot Block Write Protection bit
Esto previene que el pic pueda grabarse a sí mismo en ese bloque de código de programa.
Si por otra parte queremos evitar que un tercero nos lea el código de nuestro bootloader, podemos proteger el bootloader (y dejar el resto del pic desprotegido). De esa forma el usuario puede usar y actualizar su pic pero no leer nuestro código.
Para eso es que está el
CPB: Boot Block Code Protection bit
Saludos