Recently I've used some features that require modern OpenGL context (specifically ARB_debug_output requires to create context with WGL_CONTEXT_DEBUG_BIT_ARB via wglCreateContextAttribs) and encountered several implications (glew failed to gather extension with modern context, I've encountered several implications integrating new context into wx widgets). So the evident questions occur:
What follow is just my considerations after using an OpenGL 3.3 core profile context for a while:
Is it reasonable to use modern opengl context?
It depends. There are a multitude of libraries and middleware that still do not support wglCreateContextAttribs and the like, but some are open/small enough that you can just get to the code and change what you need.
Personally I find the lack of "deprecated" functions a blessing, because one can focus on the juicy gpu hardware capabilities of our era.
If you are writing a sort of middleware, where you have to support most of OpenGL functionality, then using a "modern" context is more than a blessing: it is a life-saver.
Are there many features that can't be used with older context via extensions?
Pratically no, as long as the hardware is the same. However the number of extensions is so great that there are probably plenty of corner cases.
Is modern context faster
Surely it can't be slower.