I don't know, I think the current way is not so bad. It's better to export just a couple of internal things like display and drawable than a full table of functions that will be a pain to keep compatible across versions. If you really want to get rid of the escapes then I think 2) would be cleaner.
Well, the problem with the current way is that 'display' and 'drawable' are really X11 concepts... This means that the current OpenGL code will ever only work with the X11DRV. While I agree that it's separated, it's not 'clean' (in the sense that we have X11 code elsewhere than in X11DRV itself).
The only problem with 2) is that there is one function that lacks the proper context variable (wglGetProcAddress).
Lionel