This sets the color vertex shader input to come from attribute location 2. In GLSL 3.30, you use this syntax: layout(location = 2) in color Remember how, in vertex shaders, you have inputs? And these inputs represent vertex attribute indices, the numbers you pass to glVertexAttribPointer and glEnableVertexAttribArray and so forth? You set up which input pulls from which attribute. Now, back to user-defined fragment shader outputs.
Unless you're using compatibility (in which case, your 3.30 shaders should say #version 330 compatibility at the top), you should never use this. That was removed from core OpenGL 3.1 and above. No, you don't have the predefined gl_FragColor.
Furthermore, we have a predefined gl_FragColor.