They certainly don't do the same thing...
Exit Sub (or Exit Function) will immediately exit from the sub or function it is in. If that sub or function was called from other code, the program will continue in that other code, right after the call to the sub or function you just left...
End will also exit from any sub or function, but it will not return to any calling sub or function. This will effectively stop all macro execution and return full control to the user.
Stop is used in a debugging phase of your macro's. At any place you put a Stop, the code will be interrupted, with the debugger highlighting that line, after which you can continue debugging with stepping through code etc...