to be included, per se.
However if you look at some of the low-level .h files which come with the IDE you will see helpful defines for things like the registers used by the processor.
As an example, one of Timer 2's registers:
#define OCR2A _SFR_MEM8(0xB3)
And 0xB3 is indeed where that register is on the Atmega328P.
You could read any
book on C (or C++), just disregarding the parts where their examples interact with higher-level operating systems (like reading or writing files). And in the case of C++, disregard the part about exception handling, since that is turned off by compiler flags when the IDE compiles your sketch.
You can compile a minimal sketch:
int main ()
Binary sketch size: 176 bytes (of a 32,256 byte maximum)
Most of that is interrupt vectors and a bit of compiler prologue, which you can omit (as bootloaders do).
If you start fleshing out that minimal sketch you would find that it would be your job to make things like millis() work, because the timers hadn't been initialized.