libOpenCL.so and header files
The libOpenCL.so file included in OpenCL SDKs for linux from AMD, Intel, and NVIDIA seem to be all different, and similarly so with the header files. It would be nice if Khronos mandated that these be binary equivalent for any given release date (obviously after the release date an update to the current version can't be mandated), or better yet if Khronos made the libOpenCL.so code open source and kept it updated in the Khronos OpenCL API Registry like the header files. Vendor extensions shouldn't be placed in the official header files until they've been approved by Khronos, and thus available in the official Khronos OpenCL API Registry.
Re: libOpenCL.so and header files
It exists a free OpenCL ICD Loader (ie libOpenCL.so) that should be able to load any ICD (OpenCL implementation). It has been tested with Intel, AMD and NVidia implementations on Linux.
Do not hesitate to report bug if you find some.
However, I agree with you that the mess with non standard header files is problematic. Only header files from Khronos should be used and distributed. Private extensions should go into private headers.