In production in bundles and minifies all JS and HTML into one file that is sent to the client. Then all further communication happens with JSON over WebSockets/SockJS. If changes are made to the JS/HTML, the server will send down a new application bundle and hot-reload the app without interrupting the user if you are storing the user's app state in the Session.
The CSS is also bundled in production. When further changes are made to the CSS, the new stylesheet is live-injected into the running apps without reloading the browser.
Client-side, you have Chrome DevTools, the best JS debugger there is. Meteor has extensive debugging support. See https://github.com/meteor/meteor/blob/devel/History.md#v094. Also, the popular IDE WebStorm has just released full support for Meteor, including debugging.
The CSS is also bundled in production. When further changes are made to the CSS, the new stylesheet is live-injected into the running apps without reloading the browser.