Some additional food for thought. For programming AVRs the two most common are via bootloader and ISP. There are others but I won't go into that.
For ISP, using external programmer, like ArduinoISP, USBasp, AVRISPmkII, and USBtinyISP. These will program the AVR flash, eeprom, and fuse bytes. You can program each individual section without affecting the other. Fuse bytes can be reprogrammed over and over as needed (I guess there is some kind of internal fuse erasing going on).
For ISP flash programming however, once you flash you cannot flash again without erasing first. Erasing sets all flash memory locations to ones "1". Programming sets appropriate bits to zero "0". Once a bit is zero you cannot program it back to one "1", you need to erase it to change it back to a one "1".
So if you had uploaded a sketch with the avrdude -D option, using ArduinoISP method, then this could be a problem. If you do this only once right after burning bootloader, then you should be okay, since flash was already erased (from burning bootloader). But you cannot upload again with this same method using ISP if you already have a sketch in flash. You will have to erase flash first in order to upload a sketch again. The issue with ISP programming is that you can only erase all of the flash at a time.
For programming using bootloader, this will only program flash memory. It cannot burn fuse bytes. If you upload using bootloader via USB serial FTDI then this method will not erase all of the flash, only what's needed, therefore preserving the bootloader. The bootloader code will re-program flash memory on a page by page basis. It will first erase a page (a page size varies from 32 bytes to 256 bytes depending on the AVR) then program a part of the sketch code to it. In addition there are fuse lock bits available to prevent the bootloader code from overwriting itself.
Since the bootloader is running code and using the serial UART for communication it needs to talk at a specified BAUD rate. So yes, it is important to know what BAUD rate the bootloader has been compiled to run at. Most Arduinos use 57600 or 115200 BAUD rates. For Sanguino boards, they are usually at 57600 or 38400 BAUD rates depending on the mcu speed. If you need different BAUD rates then you will need to re-compile a custom bootloader for that.
I hope this clarifies some things.