In my experience, you have to be very careful about checking all GL extensions are present before use, querying the GLSL version, checking all return codes, et cetera to get good compatibility. And even then, you will find some graphics card/driver/OS combinations that just don't work correctly, so you'll have to put in special checks to disable/change your GL features to avoid those bugs