I found concatenation confusing at first too. Hopefully I can explain it in a way that's easy to understand.
Why are these inverted commas in the middle and two concatenation operators, what is it in place of?
The quotes are there specifically to put a space between the first and last name. If that wasn't there it would read BillMcCarthy.
Consider this text string with PHP variables:
$string = $greeting . ", user, how are you " . $timeOfDay . "?";
That statement, depending on the values of the variables would read: "Salutations, user, how are you tonight?"
Basically, everything that's hardcoded or static text needs to be between quotes. When you want to insert a variable in a string, you have to append it to the string with a period. Before you concat, you need to break from the string (or quotes).
EDIT: to clarify a bit more, say you wanted to add a middlename to the example you have in your post but you want it hardcoded in:
$first = "Bill";
$last = "McCarthy";
$name = $first . " Donald " . $last;
This would read: Bill Donald McCarthy.