Modifying boot loader

In the common AVRs chips used in arduino boards like the Uno, all programs (sketches) are loaded starting at flash address 0. If the fuse bytes are burned to enable a protected bootloader to reside in protected high flash memory then the AVR will start execution from whatever booloader flash size has been enabled. If you have no bootloader installed but do have bootloader protection enabled via fuse bytes the execution will start at the bootloader starting address but the resulting NOPs (0xFF) will just wrap around and start execution of code starting at zero. All this is explained in the ATMEL datasheet for the specific chip in question.