Here are some simple steps you can take just to get something up & running quickly, and not to be too ambitious:
(1) For a frictionless effect, it sounds like your cube just needs to maintain a velocity vector (vx,vy,vz). Whenever the user presses a directional key, add or subtract some small fixed amount to this velocity vector.
This way, on each frame, whether or not the user is doing anything, you will move the cube by (velocity * timeElapsed), or even just by (velocity * someConstant). The cube will continue sliding along its current trajectory as though frictionless -- until it collides with a maze wall, that is... but that's collision detection, a whole other topic.
(2) I'm guessing you have the cube's position represented somewhere in your code. Well, on each frame take that position and add some fixed distance from it -- this will give you your camera's position for that frame. I suggest to you, initially, just to make your camera look down at the cube (and maze) from some fixed height. For example:
cameraPosition = cubePosition + VECTOR(0.0, CAMERA_HEIGHT, 0.0);
assuming the +y direction represents "up" in your world... otherwise, add CAMERA_HEIGHT to the z-coordinate or subtract it from y, or whatever works for you.
Then if you're doing old-skool OpenGL and not shader language:
cameraPosition.x, cameraPosition.y, cameraPosition.z,
cubePosition.x, cubePosition.y, cubePosition.z,
0.0, 1.0, 0.0); // <-- consult the gluLookAt() documentation
// ... all your other glRotate()/glTranslate() and rendering
// code for each frame follows here
Because the camera's position is cubePosition plus [some fixed distance], the camera will "follow" the cube around wherever it moves. In fact, you may find that it follows the cube too rigidly and will want to make the camera more loosely tethered -- but initially, keep it simple and just get something working.
In fact, all of this is very rigid and can be played with to get dynamic camera motion, dynamic angles, "tracks" and paths the camera could follow smoothly -- but all of that gets very complicated very quickly. Again, I implore you: initially, just to get things working, keep it simple and just have your camera perched a fixed distance above your cube, looking down onto the cube & maze. Once you get that much in place, feel free to play with it and design something more elaborate. (Just make sure you really sit down and design it, and not just cobble things together, otherwise you'll drown yourself in code clutter.)