return simply implies that you wish for control to be returned to the caller of that function.
a void simply means that the caller shouldn't expect any value to come out of the function, but until that function finishes, or until a return is called, that function holds control over program flow.
You can use return; without any value because you might want to stop function execution and return control back to the main function or what not, if a certain condition was met.
In this example function1 takes some input from cin, if its less than 0 *a negative number* then it stops program execution and returns control to the caller, which in this case is the main function.
return;//If the person puts in a negetive value, stop the function
//and return control to the caller.
cout<<"Your Input was Positive!, your input was: "<<a<<endl;
The return call on main (return 0;) returns control to the operating system, with a return value of 0, (Windows doesn't use this, but linux/unix does).
But in essence just think of a call to return as a break on function execution where control is given back to whatever called the function in the first place.
EDIT: Wasn't sure if this even really answered your question, so i will add one more thing.
returns can be called at any point during a functions execution.
So as you can see return values can be put in anywhere, you can even return operations or extra function calls. Hope this helps you to understand returns a little better.
int add(int a, int b)
return 0;//We won't allow negative numbers here!
return 100;// Anything larger than 100 we will trunicate