The libraries that C++ uses are low-level, but every language has libraries of some sort (it's just code that can be re-used). However, you don't need to worry about compiling against certain libraries like in C++ because Java simplifies everything a lot. That and Java doesn't compile to machine code until it is run through the JVM.
API stands for Application Programming Interface. It is the front-end that your code interacts with to control whatever is the backend. For example, say you have a program that controls a photo of Eiii's face that is stored in memory. Without an API, you would have to fiddle the memory directly to change his face. However, if it comes with an interface, you can use that instead. The "interface" could have functions like makeBigger() or makeLookLikeJitspoe() or changePixelColor(x, y, color).
Namespaces just allow for organization. Instead of having all the objects in the main scope, you can put it into categories called namespaces. System.IO.LineBuffer versus LineBuffer. Without namespaces, you would have a problem if two independent groups wanted to name a class the same name.