As Ben explains in the video for lecture 17, he wants you to return even if the return type for the function is void, just to get you into the habit of returning (and not forgetting to return). If you return from a void
function, basically it does nothing - as the program would return from the function itself, and keep running through the rest of the code anyway. I hope that makes sense, if not, just holler and I’ll try to explain it a little better 
Now, for the string GetGuessAndPrintBack()
function, it should look like this (and the comments are mine to try to explain the behaviour;
string GetGuessAndPrintBack() { // we declare the function with string as a return type
cout << "Enter your guess: "; // print instructions to the screen
string Guess = " "; // declare a string variable and initialize it
getline(cin, Guess); // grab whatever is input on the console and store it in Guess
cout << "Your guess was " << Guess << endl; // print whatever was stored in Guess back to the user
return Guess; // return the contents of the Guess variable
}
In the current code, the function could just as well have been a void function that didn’t return anything. However, if we want to use this information later in the program, we need to return it to the program somehow. For example, we could store it in a variable called LastGuess
, to check if the user is repeating himself. Then we’d do something like
string LastGuess = GetGuessAndPrintBack();
Here, we declare the string variable LastGuess
, and initialize it to the return value of GetGuessAndPrintBack()
.
You could then do
cout << LastGuess << endl
and the output would be whatever you had in the line
cout << "Your guess was " << Guess << endl;
inside the GetGuessAndPrintBack()
function.
Keep asking if it’s still a mystery, I hope this helps a little though 