The filtering description is correct. The differencing is forward differencing.

The iteration over months in the code had puzzled me. My guess, which appears to be correct upon checking, is that they're actually differencing months in successive years. That is, after filtering (smoothing), the differencing is actually between i and i+12, not i and i+1. The green dashed curve in Fig. 2 is the resulting smoothed-and-differenced CO2 curve, whose magnitude is given by the right-hand scale.