Most of my modern OpenGL code is legacy version 2.1 and still uses the fixed function pipeline, which is still my favorite method of doing graphics. I use GLEW as the library for loading modern functions because it is used by most tutorials I find. I can still use GLFW for the windowing library so at least some of my experience with legacy OpenGL applies to modern stuff. Below you can download the source of my first Modern/Core OpenGL spinning polygon example.
main.c
gl_bbm_polygon_core.h
shaders.h
callbacks.h
makefile
What makes modern OpenGL hard is that I have to use Vertex and Fragment shaders as well as Vertex Array and Buffer objects. This takes a lot more work than the old glBegin,glVertex2f,glEnd that worked before.