I have recently learnt the basics of c++ but I want to advance to making proper GUI's (and games) but I don't know what to use.
I think the two most popular libraries are OpenGL and Direct3d but I'm not sure which one to use.
could you guide me in the right direction:)

I think it is better to learn more about C++ than the basics first. You can learn about writing game logic without adding the complexity of graphics to your program. If you start learning how to make graphics with incomplete knowledge of C++, you will end up struggling with the language and the graphics API at the same time. That makes learning harder.

how much more do i need to know then? i can:
print to a console (obviously)
take user input
use files
use loops (for, while, do)
use decisions (if, if else, switch ect)
and i grasp the concept of how memory is allocated
and i am begining to use classes (and i understand constructors/destructors)

and this isnt the first language i have programmed in.

Well to make a GUI program in opengl, say a basic triangle, all you need
to know about c++ is, functions,libraries,if-else,and switch-statements.

From that you can make your first triangle. Although it might be hard
to understand what which function does from the GUI library.

My suggestion would be to program for a at least a year, before jumping
into GUI.

I understand what your saying but I have been programming for about a year and I think I am ready, as I can go at my own pace, and I am going to get a book to learn from. I'm asking because I don't know where to go from here.
I want to learn one of the api's but which one would be better to learn. would openGL do everything that direct3d can?

For now, I would suggest openGL, as it is easier to learn. Google
tutorials for it. This link
would help you get opengl installed.

My sugget, win 32 first then openGL or directx
You can search NEHE for tutorial in OPEN Gl, i try but so much thing to remember, in the end i confuse and have stop for a while!

and um... why win32 api? what use will this be to me?

and um... why win32 api? what use will this be to me?

Its good to know win32, but I think for graphics opengl would
be better to learn.