Well, the relevant bit can be found in the OpenGL 4.2 specification appendix E.
So basically if you create a 3.3 context with the core profile set, then you'll only have the 3.3 functionality.
If you call older (removed from 3.3) functions such as glBegin() it will generate a INVALID_OPERATION error. Further errors will be generated if you call a core profile function with old parameters, such as glTexImage2D with GL_LUMINANCE as format.
If you create a 3.3 context with compatibility profile set, then you'll have the functionality of 3.3 and the functionality that is described by the GL_ARB_compatibility extension. This means that you can have the functionality of a 3.3 context AND of older versions. So calling glBegin() will not generate an error.
There is functionality that is only marked as deprecated, however it may still be present in the core profile. The forward compatible option enables you to remove these functions, thus create a context that is free of deprecated functionality.
This is great because the deprecated functionality is often more cumbersome to use, or slower, so this will force you to use the modern features of the api.
as for the debug context creation, here's the relevant specification:http://www.opengl.org/registry/specs/ARB/glx_create_context.txt
it is meant to be used during application development, and they provide additional runtime checking, validation and logging functionality. It may include possible performance penalties. However the behavior of the debug contexts is implementation defined, so they may act as non-debug contexts.