Unofficial OpenGL Software Development Kit 0.5.0
GLFW is a cross-platform library for creating and managing an OpenGL window. It abstracts platform-specific code, so code written to use GLFW can work on any platform GLFW supports.
The principle difference, structurally speaking, between FreeGLUT and GLFW is that FreeGLUT manages the window loop. In any windowed application, there is essentially a loop that continues until the user closes the window. This loop checks a queue of messages constantly; if any messages are found, like "the user moved the mouse" or "redraw the screen", the loop processes the message. Then it goes back and checks for more messages.
FreeGLUT implements the window loop itself. By calling glutMainLoop, the user application relinquishes control over the application to FreeGLUT. FreeGLUT uses a number of callback functions to let the application know when to do things, such a render the screen, provide input, etc.
GLFW applications are required to manage the window loop themselves. This means more boilerplate code has to be written by the user for simpler applications. But for more complex applications, the power afforded by this mechanism is far more important than the minor boilerplate code. Animations may require strict timings that FreeGLUT cannot easily support. The more complicated the application, the more likely it is that you will want the freedom to control the window loop.