Besides the information on this article there's also a lot more information on how to reduce your bill and serve your site way faster on this one >
http://news.ycombinator.com/item?id=352695
You also get a big performance boost when you use the cache-control headers properly. Because you'll be saving the browser having to connect to the server to check if the file changed, and if you have many js, css, and image file, then you'd be saving a lot of round-trips.
AFAIK, one of the browsers (probably IE), ignores query parameters on css and js files and will not refresh foo.css?v=2 if it has foo.css?v=1 in its cache.
I am told by someone with a high volume, consumer site that there are proxies in use that strip the query parameter from URLs that they guess are images. They are rare, but they caused him to put the serial number in the file name. (This was several years ago, I don't know if these proxies still exist.)