JSONP stands for JSON with padding, and it provides a way for the client to specify some code that should be added to the start of the JSON response. This allows the JSONP response to be directly executed in the browser. An example of a JSONP response might be:
processResults({value1: "Hello", value2: "World"})
I think the major place that JSONP would be useful is in making requests across domains using the <script>
tag. I think the major disadvantage is that as the JSONP is directly executed you would have to trust that the remote site wouldn't send back anything malicious. However I have to admit that I haven't used the technique in practice.
Edit: Remote JSON - JSONP provides more information on why you would want to use the technique from the guy who appears to have invented it.