I noticed normalize.css isn't used here. When do I need to use it and when is it not necessary?
It completely depends on the programmer. I presume Normalize CSS is just a set of rules getting rid of all the default values CSS comes with, I.e. padding on headings. It's completely optional, i prefer to ALWAYS use it because I like to start from scratch and not worry about pre-set paddings ect. Also by using it you're helping making your website more compatible for each browser :)