Why is everybody hell bent on using a boot loader when the sensible course for a finished product is to make the chip as independent as say a Microchip PIC. I want to get away from it being boot loade
The bootloader is purely there for your convenience. Don't use it if you don't want to. I was testing some low-power stuff yesterday. Initially I programmed via ICSP (using one of my sketches), transferring the .hex file to a micro-SD card each time. Eventually I got bored with that and installed the bootloader. That just sped up the loading of the main sketch.
Once you have it debugged you can tweak a fuse, so the bootloader is not executed, or just load it without a bootloader. The bootloader is not there to annoy you.
Is there any real need to have separate boot loaders? Probably just as hard to remember which bootloader for which application especially 2-3 hours after you have written the app., code than it is to set the required registers in the actual project program code.
The separate bootloaders are simply because different chips have different memory spaces (and indeed, hardware). You can't have a single bootloader that works on all chips because they have different configurations.
I should point out that the ICSP programming still uses, in effect, a bootloader. It is just one that is programmed into the actual chip, that takes over if you hold reset low, and send data down the SPI ports.
Once again, the bootloader just lets beginners (or indeed experienced people) program via a serial or USB port. This makes programming (eg. in classrooms situations) very simple. For people deploying stuff in the field, certainly program without a bootloader if you want to. However you will probably find that having some way of replacing code, one day, will be helpful. For example, you will probably find that a modern dishwasher or washing machine can have its firmware reprogrammed without pulling the chip out and replacing it. How do they do that? With a bootloader.