Interfacing Arduino with PC (2-way communication)

I want to be able to click things in a GUI and have the robot do what you tell it to.

If you are clicking in a GUI, and the robot does what I tell it to, won't that be confusing?

but if there is a better programming language to use, please let me know.

Well, I like C# for defining interfaces and the ease of communicating with the serial port. Getting data from the serial port displayed back in the GUI can be a little challenging, given the need to use multiple threads and get the threads to communicate, but once you get it all worked out (I did, send me a PM if interested in the sample program) it becomes transparent to the operation of the program.

I looked at firmata and it seemed attractive, but I really don't wanna try to learn a new programming language

Firmata isn't a programming language, isn't supported for the Arduino (it's available, but there is no support), and is somewhat limiting in that there is a servo sketch, a standard sketch, etc., but no one do-it-all sketch like you could write.

To me, the serial communication seems kind of confusing.

I don't see why. Think of it like posting on this forum. It takes a while to type a message (send some data). It may or may not actually get to the server (it may get lost). It may, or may not, actually get read (reading it is your responsibility), and it may, or may, not be easy to understand and implement the suggestions being made.

But, since you are controlling both the sender and the receiver, it can be quite rewarding to develop a protocol that both ends can understand, and get them to actually play well together.