The simplified answer:
a) the String library is a class (object). A class can contain member variables, constants, member functions, and overloaded operators. Its a c++ thing
b) atof expect an argument of type const char * str
c) to convert the string class to a const char * str
Just as a side note, I dislike converting to different types. It can inject errors and drive you crazy debugging. I find it better in the long run to redesign the code to use the type I need, if possible.