Using Visualforce forms to capture user input and submit this back to the server requires use of the view state and round trip HTTP requests, both of which introduce an overhead to the processing. Additionally, when working in JavaScript, interacting with controller properties is not the most intuitive experience, as the properties are managed server side and made available to the page when it is rendered. This means that they must be treated as static text values by JavaScript before they can be inspected, and any changes must be manually inserted into standard input components in order to send them back to the server.
JavaScript remoting provides a mechanism to execute a controller Apex method directly from JavaScript in a stateless fashion and receive a callback with the results of the method call. The state of the page is managed in JavaScript and the server only receives the reduced set of information that it needs to execute the specific...