I want to make a 3D game and I don't know what to use OpenGL or SDL?
First question is have you even made a 2D game before?
SDL is "good" because it makes the window, sets pfd, handles keyboard/mouse input and a few other things but I really disliked how you had to carry 50 dll files around with it just so you could have sound and textures. I found it really useful to start out with because instead of spending time learning how to make a window and do handling you are able to focus on figuring out how to make a game.
The next step I took was going to GLUT. It has many similarities to SDL with the window making and handling but with GLUT you learn how to draw with OpenGL functions and you actually learn lots more because when you break off GLUT and go WINAPI and OpenGL (if you use windows) then all you need to know is how to set up the window and manage the message loop.
I would start with a 2D game with GLUT just because SDL was good starter but the stuff I was able to transfer over to OpenGL was just the logic programming since they are too different to copy over handling methods.
I got really annoyed with the "low-level-ness" of OpenGL and GLUT. SDL provided what I thought was a much more reasonable level of an interface. It was also nice that you don't have to enter the "glut main loop" so you don't have to change your existing code so much if you want to add graphics.