1) HTTP Version 1.0 is based on RFC 1945 and version 1.1 was released later with various improvements along with the backward compatibility on RFC 2616. This is a big list just adding only few differences -
Persistent connections:
HTTP 1.1 also allows you to have persistent connections which means that you can have more than one request/response on the same HTTP connection, whereas in HTTP 1.0 you had to open a new connection for each request/response pair.
OPTIONS method:
HTTP/1.1 introduces the OPTIONS method. An HTTP client can use this method to determine the abilities of the HTTP server.
Caching:
HTTP 1.0 had support for caching via the header: If-Modified-Since. where is HTTP 1.1 expands on the caching support a lot by using something called 'entity tag'. If 2 resources are the same, then they will have the same entity tags.
100 Continue status:
There is a new return code in HTTP/1.1 100 Continue. This is to prevent a client from sending a large request when that client is not even sure if the server can process the request, or is authorized to process the request. In this case the client sends only the headers, and the server will tell the client 100 Continue, go ahead with the body.
Digest authentication and proxy authentication
Extra new status codes
Chunked transfer encoding
Connection header
Enhanced compression support
Much much more.
See detail report at http://www8.org/w8-papers/5c-protocols/key/key.html
2) WebSocket is a protocol providing full-duplex communications channels over a single TCP connection. Before WebSocket, all communication between web clients and servers relied only on HTTP. With websocket in place, dynamic data can flow freely over WebSocket connections that are persistent (always on), full duplex and fast.
The main purpose of WebSocket is to provide full-duplex communications channels over a single TCP connection that can support any protocol. Both the WebSocket API itself (W3C) and the WebSocket protocol are standards, see RFC 6455. While WebSocket was designed originally to be implemented in both web browsers and web servers, it provides such significant architectural benefits that it is being used more and more to communicate between any client and server that has to connect over the internet, for example in between native mobile applications and servers, and in between devices.