Yes, it allows you to save current state information (if you want), and push the current url into the history and load a new url into the url bar. It does not reload the page. The assumption is that you are doing something with javascript (an AJAX call or some other code running) on the client that corresponds with the change in URL.
Your browser's back button and history.js will not undo any javascript code that you've done. You should use AJAX to reload the page for that previous URL, which should readd the hidden button. So it's a slight nuance - pressing the back button won't unhide the button, rather it will recreate the button from the original code which you get from another AJAX call.
Update:
You can bind a handler to the window.onpopstate event.
window.onpopstate = function(event) {
// your code...
}