Christian's answer already covers most of what you asked for expect your concrete example from the end of your question about representing "North-East":
First of all, it depends on your coordinate system. But if we look onto your world from the top and assume that northNorth/southSouth is the y-axis (+y = northNorth) and westWest/eastEast is the x-axis (+x = eastEast), you could represent the direction "North-East" as the (un-normalized) vector [1, 1] or the (normalized] vector:

Example visualization in WolframAlpha.