Take a look at the BitCoin documentation. vRecv is an instance of CDataStream which overloads the operator>> to read and unserialize data.
Background
To understand the expression, precedence and associativity of operators are important. In C++, the >> operator is left-associative, which means you can rewrite your expression
(vRecv >> locator) >> hashStop;
// Or in terms of actual function calls...
( vRecv.operator>>(locator) ).operator>>(hashStop);
Interpretation
Looking at the code for the operator>> you see that the method takes an argument of type T and returns a reference to itself. In your particular case, the argument is an instance of CBlockLocator (a STL vector of uint256 elements). Notice that the operator>> calls Unserialize which effectively reads bytes from a stream.
Thus
(vRecv >> locator)
reads bytes from the vRecv stream into your locator object, returns the same stream meaning that next this is executed
vRecv >> hashStop
which advances the stream to read bytes into the hashStop object. So, long story short: fill the locator and hashStop objects with bytes from the stream.
6
solved Shift operator usage in terms of classes