Disabling USBDevice and reprogramming

Hi, after I've played enough with my project, I've decided to take a step further and write my own application without Arduino libraries from scratch: my own main() function, no TIMER0 overflow interrupt.

During the initialization I see, the Arduino framework to be doing USBDevice::attach(). I would like to remove this in order to save power.

The question is: will I be able to reload the program afterwards using the bootloader and avrdude? Does the bootloader provide some grace period to reprogram before starting the app? I could not quite get it from sources. There is definitely time when it flashes LEDs, but is that enough?

I'm using AVR328P.

Thanks in advance.

Yes, I will be able to reprogram the device using bootloader.