Bootloader for Atmega32u4 (store new sketch and jump there)

So that means that I have to store the sketch into memory space 0x00?
How can I specify my location? Because I thought PROGMEM will give me a random free space!
Do I need to specify this location?
If I store my sketch in 0x00, so where is my bootloader located then?
Do I need reset again after when the sketch is uploaded?
This means that I have go through the bootloader again!

pegwatcher:
I can see any (signifintcal) differences between mine and your code!
Can you explain if I am Wrong.