That is because your phone has several partitions, and some of those are not user-accessible, but they are required by the OS for the proper functioning of the device. This storage is "partitioned" from your physical storage. These partitions are as follows:
bootloader or variants thereof: About a few MB. Responsible for booting up your device. You can't normally mess with it, even with root on-device, but even if you can, you shouldn't.
/boot: Contains the OS core, the Linux kernel. About 10-25 MB, varies with device.
/recovery: The name is pretty self-explanatory. About 10-25 MB. Responsible for doing OTA updates, factory resets and saving your device when it gets into a bootloop. Most rooted users usually flash a custom recovery like CWM or TWRP before going forward with customization.
/system: About 1-1.5GB, varies with device. Stores system data and apps. Read-only to normal users, write-capable for root. Most root users mess with this partition on a regular basis.
/data: About 1GB- depending on device. On devices with unified storage, this partition holds the internal SD card too as an emulated device. It is not even read-only to normal users, but it can be written to and read with root. It holds user-installed apps, their data, and user-specific data.
/cache: App and data cache. From 16-256 MB. A kind of temporary storage provided to apps.
Note: A factory data reset wipes
radio or variants thereof: A few MB. Again, responsible for handling telephony. Don't mess with this.
/storage/sdcard0: On non-unified storage devices, this is the user-available storage as a separate partition. On unified storage devices, this is still there, but is a folder under
/data actually, with write permissions for normal users, unlike the rest of
For any more info, a Google search will help. Or you can check this out.
Also, the partition names are the ones I got from fastboot while flashing my HTC Nexus 9 (16GB,WiFi, flounder/volantis) when upgrading Android via factory images.