To answer the first part of your question:
LPCSTR is a pointer to a const string (LP means Long Pointer)
LPCTSTR is a pointer to a const TCHAR string, (TCHAR being either a wide char or char depending on whether UNICODE is defined in your project)
LPTSTR is a pointer to a (non-const) TCHAR string
In practice when talking about these in the past, we’ve left out the “pointer to a” phrase for simplicity, but as mentioned by lightness-races-in-orbit they are all pointers.
This is a great codeproject article describing C++ strings (see 2/3 the way down for a chart comparing the different types)