This is where...
#1 Things are complicated by Glut...
Like other cross-platform GUI toolkits (e.g. Qt, wxWidgets, and FLTK), Glut provides its own WinMain for Windows apps. which forwards to main(). This means that the same code can be compiled for Linux, etc as well as Windows. So a Glut app does use main.
Glut also provides its own event routing mechanism which hides away the Windows messages.
OpenGL/GLUT example
http://www-graphics.stanford.edu/courses/cs248-01/OpenGLHelpSession/code_example.html
#2 And console event handling...
Mouse handling is possible for Windows console apps, but using ReadConsoleInput and related functions, rather than the normal Windows messages.
Reading Input Buffer Events
http://msdn.microsoft.com/en-us/library/windows/desktop/ms685035%28v=vs.85%29.aspx
Of course, the more normal route on Windows is the standard messaging approach (WM_LBUTTONDOWN, WM_MOUSEMOVE, etc.) used by GUI apps. Either directly or via a nessage map (if you use MFC.)
Finally, MOUSEEVENTF_LEFTDOWN is one of the constants used with SendInput which is for generating input events (keyboard and mouse), generally for testing purposes.
SendInput function
http://msdn.microsoft.com/en-us/library/windows/desktop/ms646310%28v=vs.85%29.aspx
Andy