No more calls besides glwin->show(); are necessary after a GL window was hidden.
The GL context is re-created by member function ::make_current() which is itself automatically called
by the normal event loop.
You can see that with test/fullscreen.cxx : replace line #154 therein
sw->mode(d ? Fl_Mode(FL_DOUBLE|FL_RGB) : FL_RGB);
by
if (d) sw->hide(); else sw->show();
and run this app. Use its "Double Buffered" button to hide and then re-show the GL panel.