1) The "current pixel" is not known. If you want post-processing, then typically you would render the screen to an FBO texture, and then in your post shader sample from the texture in order to "get the screen pixel."
2) Yep; unless you are using GLSL 130+ in which case you would use a custom out attribute.
3) As gouessej said, gl_FragCoord.xy will do the trick. However, it gives you the screen
coordinates, not the coordinates of, say, your quad. If you're trying to (for example) make a horizontal gradient from 0.0 to 1.0, you would be better off using texture coordinates than relying on gl_FragCoord.
4) OpenCL is tricky to interact with OpenGL/GLSL and probably won't give you much of an improvement, unless your lighting calculations are extremely
It sounds like you are having trouble understanding the role of fragment and vertex shaders. You can read up on them here:https://github.com/mattdesl/lwjgl-basics/wiki/Shaders