Integer &operator ++();
increments a variable and returns a reference to the incremented variable
Integer operator ++(int);
copies a variable. increments it, and returns a copy of the new value (doesnt upset the original)
Integer & operator =(Integer &&a);
this is a move operator, you still need to use std::move() unless returning the value which will automatically perform the move. integers are a bad example, try it with a class object.
there aren't any really, each example performs diffferent functionality and its for you to choose the one you want.
eg; you're first example increments a variable in memory then returns a reference to that instead of copying it.
you're second example reads a variable, increments it and returns that modified copy, so its not a ref.