What's the hardest part of SQL programming?
Probably joins. Also, making sure the database schema is correctly designed (if you own the database).
What's the most important part of C++?
Definitely pointers. If you have a firm grasp on how pointers work, C++ becomes much easier.
Why don't I have to free memory in C#?
C# is a managed language, which means the garbage collector handles freeing memory for you. It does this by keeping track of references (pointers) and detecting objects that no longer have any references to them. Technically, you CAN force the garbage collection to run, but it's not usually done.