Why does Android boot so relatively slow?
Few years back, I worked on Android boot time optimization, as a Android developer. Obviously, as part of this work, we first needed to analyse where Android spends time during booting. 

Below is the brief findings:

Hardware used : OMAP3430 Board which is like development board on which Stock Android is flashed. On actual commercial/production device, there will be additional specific hardware.
To visualize the boot time, we used a developer tool called bootchart

The most time spend by Android is in following 2 areas:


Zygote process. When android OS is started it will start Zygote process, it preloads classes to create
a shared memory area for applications. This work of proloading of java classes
takes @23 secs for its completion.


Why? Because The zygote class preloading is essential for good performance of the system after boot. So once classes are loaded of all apps, then run-time of app is much faster.


Package manager service. 
In logcat output, we can see that Package manager scans 4 directories. 
/system/app, 
/system/framework, 
/data/app, 
/data/app-private. 


Next, there is a component called Activity Manager which start differents services such as Location service, Telephony service etc. And it takes nearly 11-12 sec to finish this.

Why? Because, The package scan can in theory do some caching of its results after first boot and may check for security vulnerabilities.

If you add up these 2 times, it is about 35 Seconds 

You may ignore these numbers in Today's day and age, but the point these number indicate is where Android AOSP code spends time during boot. OEMs have their own set of hardware which varies device to device.

Of course, there are other hardware and software initializations that Android needs to do after these 2 time consuming steps, which can stretch boot time further.


  And is there anything as a user, I can do to speed up the booting
  process?


Not much I guess. The Android developer community and OEMs are still working on expediting the boot time but as you may imagine, it is not all that easy and making changes to optimize boot time may end up causing more app load time during normal operations, as hinted by Android framework engineer.