Zwraca jakby id zmiennej, Każda zmienne musi gdzieś być w pamięci ram, a gwiazdka, czyli wskaźnik pokaże ci gdzie jest. Za pomocą wskaźników możesz np. mieć 1 zmienną, i wskaźnik. Jak napiszesz tak:
int zmienna = 0;
int *wskaznik = &zmienna;
*wskaznik = 10;
to zmienna też będzie miała też 10. Są jak by mentalnie połączone.
Wskaźniki też definiują tablice, a std::string to tablica char'ów więc możesz przez to też zwrócić std::string; wtedy piszesz tak:
std::string x;
x.c_str() = funkcja("super char", "zarabisty char");