Smartphones which are part of everyones life comes embedded with GNU/Linux and different rootfs which combines together to form different distros for smartphones. Some of the previews of such distros on smartphone are qtmoko, DoF, AoF, Firefox OS, ubuntu touch.
Developing application on userland is challenging but if one wants to get involved in developing custom ROM images for such devices then the area of concern widens further more which includes generating kernel image for the device(support for the device component in the kernel), generating bootloader which also has to satisfy the devices spec it becomes even more challenging when different flavours of bootloaders are available like uboot, qi with boot menu. Now comes the rootfs ROM image which comes in different flavours like qtmoko, DoF, Android etc. All these when combined together provides a clear cut basis on what runs on the smartphone(Application processor)[This very much is the case with all the smartphones] and who runs the ROM images or whether such custom builds are allowed?[not all phones allow this]
Then there is the mobile station(MS) open source GSM stack which can be flashed on the Baseband Chipset(BP) chipset which provides the opportunity to learn about the real time GSM stack on a mobile phone giving insight into how GSM network works(a developers point of view)