LiveReload should works on every browser that supports WebSockets. It should work on modern WebKit-based mobile browsers.
Live.js uses polling. It sends XHR HEAD request every second.
LiveReload monitors file changes using FSEvents (on Mac OS X) and inotify (on Linux). When the file modified, it pushes its path to the browser and reloads immediately.
Has nothing to do with Live.js then. Isn't really even about a developer's forgetfulness when pushing to production. It would be about failure to set up different production and development environments, which can cause problems much worse than a wasteful AJAX call.