Can somebody explain why some amount of memory always reserved for hardware? How is this related to memory addressing?
A great deal depends on whether this is a 32 or 64 bit OS.
With a 64 bit OS the biggest user of hardware reserved memory is typically the video system. For reasons of economy many video systems have no or very little memory of their own but rely on system memory for it's needs. This is particularly common in laptops. This memory would be reserved by the BIOS for video use before Windows even starts.
All of the above applies to a 32 bit OS but there is an additional factor. A 32 bit OS has a fixed 4 GB physical address space. RAM is the biggest user of this address space but it is not the only one. For performance reasons a substantial portion of this space is used for memory mapped IO. This allows the CPU to quickly communicate with hardware devices by reading and writing to them the same as it does with memory. Typically this would require about 500 MB and more address space. There are other methods available but they are much too slow for high performance devices like video.
Memory mapped IO appears in the same address space as RAM. That introduces a problem. You can't have 4 GB RAM and 500 MB+ of memory mapped devices in a 4 GB address space. It just won't fit. Thus, whatever space is used for memory mapped devices is unavailable for use by RAM. Typically about 500 to 750 MB is lost but the exact amount depends on the hardware.
64 bit operating systems have a physical address space measured in terabytes so there is plenty of room for RAM and memory mapped IO.
why some amount of memory always reserved for hardware?
Because this is a part of contemporary personal computer architecture, called "PCI", Peripheral Component Interconnect. This architecture was originally developed in early 1990s to make a progress in configuration and performance of expanding number of PC add-on devices, to provide also Plug-And-Play functionality (to eliminate awkward explicit configuration process and allocate peripheral resources automatically)
Each peripheral device needs means to communicate with CPU, to transfer data back and forth. So the PCI architecture provides the legacy I/O access space (an outdated form of peripheral communication in X86 architecture, which is less and less utilized nowadays), and a MEMORY-MAPPED space, which provides much faster access and data exchange. Obviously, if some window of communication is mapped to common memory space, it gets excluded from the address area of regular RAM. Although this resource allocation schema is flexible, there are some achitectural restictions (I believe at OS level as well) on how to decode and map this space, so some portion of upper memory is "reserved".