Althought tinyUSBboard has a variaty of different (and exchangeable) bootloaders, its default one is USBaspLoader.
In normal mode the bootloader simply starts up the firmware, the user programmed into the AVR last time using the program-mode.
Additionally the bootloader implements some API, which can be used for example to write-access the flash from inside your own firmware.
This also makes it possible to provide migration- and update-firmwares (an application-section-firmware which exchanges the bootloader during its own execution).
With migration firmwares the bootloader can be either exchanged with some complete other bootloader:
For example switch out the default USBaspLoader bootloader with some other ones.
Or the bootloader can be exchanged with some other version of itself - this way the user always can maintain recent patchlevel and feature set.
By pressing the PROG button (effectively putting PD6 to GND) during a reset or power-up, the program-mode will be entered:
There the bootloader impersonates an USBasp programmer and
makes all the different memories and data of the AVR available for your programming tool.
Bootloaders used on tinyUSBboard implement specific code, allowing normal firmwares to utilize some of the bootloaders functionality.
This way you can enable your firmware to do things (like writing to the flash), which normally is impossible due to hardware restriction. The API also enables you to interact with the bootloader via software.
Get the tinyUSBboard API from GitHub