You should specify #version 330 core, I think that way it tells you if you're using deprecated functions (if you query the infoLog of the individual shaders and the shader programs, if the driver vendor is nice enough to report detailed info, I hear its not always the case).
In any case, it works like that for OpenGL in general, not just JOGL/LWJGL. And Apple is specially anal about the versions they support of OpenGL (or anything really). I don't know how JOGL context creation works but in LWJGL you have to ask specifically for a core context, otherwise it defaults to compatibility context.
Have you looked at this? http://www.arcsynthesis.org/gltut/ It uses all core functionality. Which means, OpenGL 3.3 core context, and GLSL 3.30 core shaders. It won't tell you how to write a SSAO shader with core 330 GLSL but its a start. I haven't seen JOGL/LWJGL tutorials that use core profile, most of them used fixed function pipeline, so you're left with mostly C++ resources to figure out how to use more recent OpenGL stuff.
You also have the official OpenGL spec in OpenGL registry to see whats in core profile and what isn't.
I haven't really tried it so I don't know how it works, but I *think* you can have, say, an OpenGL 3.3 core context using #version 400 in the GLSL for example. GLSL works through extensions like everything so you might be able to use newer GLSL syntax on older contexts. But thats useful only if you're after a specific feature I guess.