Hello, I'm currently studying CS (4th year) and this semester I'm learning about Operating Systems.
I've used OpenWRT to hack a D-link router I had, I found it very interesting, a linux system that fits in 16 MB if I'm correct.
I really want to learn how to develop for a GNU/Linux OS and I though OpenWRT would be a good place to start, I'd also like eventually to learn how to build packages.
Is OpenWRT for 'beginners'? I also was recommended to take a look at http://www.linuxfromscratch.org/
Is there any book you recommend?
Just do yourself a favour and start your linux from scratch experiments on x86/ x86_64 (or a x86/ x86_64 VM) or at least an ARMv7/ ARMv8 SBC with plenty of ressources to spare.
You want to experience the linux from scratch process and learn how it all fits together, but fighting against a heavily ressource constrained, deeply embedded, target like the typical OpenWrt supported router is another can of worms, before even taking cross-compiling of stubborn handwritten buildsystems for various upstreams into account.
Even for running OpenWrt on your router, you do want to keep https://openwrt.org/supported_devices/432_warning in mind - 16 MB RAM really is insufficient for anything but proof-of-concept-booting.