Callbacks in C++ works just like in C. Pass a pointer to a function you want to be called on an event. There’s no difference between C and C++ in that sense.
What I think you actually want is to pass a member function. That, however, won’t work. Pointer to functions and pointer to member functions are different, and GLUT doens’t know about classes or member fuctions.
Whether some other API is better depends entirely on what YOU want, not what we want. You have to ask that question to yourself, not us. If you want to pass member functions and GLOW supports it, then obviosly it’s a better choise. But there are other factors that can be concidered as “better”, and that’s for you to decide.
You might try creating a singleton class, using static members for the GLUT callbacks, then use virtual functions on the singleton to fire the GLUT events that are raised. You could use this as a base class for your GLUT apps.