Both are loopback addresses that use the loopback interface. The 127.0.0.1 loopback address allows you (and software) treat the local machine as if it were a remote machine. An issue arises however, if you (or sofware) want to use the hostname instead of IP and there is no network at all. Debian and ubuntu choose to define 127.0.1.1 for mapping the ip of your host_name in case that you have no network.
From the Debian manual:
Some software (e.g., GNOME) expects the system hostname to be resolvable to an IP address with a canonical fully qualified domain name. This is really improper because system hostnames and domain names are two very different things; but there you have it. In order to support that software, it is necessary to ensure that the system hostname can be resolved. Most often this is done by putting a line in /etc/hosts containing some IP address and the system hostname. If your system has a permanent IP address then use that; otherwise use the address 127.0.1.1.