The only difference is that POST is allowed to have side effects (changing data on a machine) and GET is not (getting a webpage).
This is actually a little bit misleading. The difference between a GET an a POST is actually how the data is passed to the server, not how that data is interperated/used on the server. GET requests pass data along in the form of a query string appended to the uri. POST requests pass data along inline (can't think of a better word) with the HTTP request.
GET requests have limitations to the size of the query string (varying from browser to browser and server to server), with the http 1.1 spec warning servers about handling uris longer than 255 bytes.
I'm not aware of any limitation in size for POST requests.
Any cgi script with sufficient system access can change data on the machine it runs on regardles the request type.
That said, yours was a resourceful post with great links.