Some of that pixelated look might be achievable by using normal 3D rendering with low-poly models and low-resolution textures, but render to a small texture instead of the screen, then draw that texture to the screen at a larger size with nearest neighbor filtering so the pixels don't get blurred.
I know this is old but i would like to add a little practical information.
As stated by others but more specifically related to graphical programming.
A Normal aka (a surface normal) is orthogonal to a flat plane our triangles surface.
(it sticks out from it)
A Tangent can be considered to be a normal that lies along or on that plane (its co-planar) ...