gluUnproject() doesn't take the viewport matrix (there isn't actually any such thing as far as OpenGL is concerned), it takes the viewport parameters. ie the stuff you pass in glViewport(): x, y, width, height.

First, the viewport transformation can be written as a matrix so there is actually such a thing. Second, he is using modern opengl and is probably trying to avoid glu calls since these calls tend to reduce freedom and control over the program. Ive never used the gluUnproject but if it doesn't take in the projection matrix as a parameter, then it probably assumes you are using the fixed function pipeline which he is not. All he is doing is multiplying the point on the window by the inverse of the viewport and the inverse of the projection. gluUnproject does the same thing in the background it just hides the matrix math from you.