I have to disagree with theaccepted answerto this question. I would have written the following as a comment to that answer, but it's too lengthy.
A repository is a collection of packages, hosted on an arbitrary server.
A PPA isalsoa collection of packages, hosted on the Launchpad servers.
In particular, a PPA isnota single package, as that very ambiguously formulated point"PPAs are packages (/collections of software)."in the accepted answer may lead to believe. Additionally, apackageis not (necessarily) acollection of software, which makes that point even more confusing.
Thus, a PPA is a special kind of repository. Like a square is a special kind of rectangle.
The main difference is the hoster. Basically, if you are a programmer
and want to develop and distribute your own packages, and you have your
own root server in the Internet, you can set up your own repository on
it. Great! But what if you don't have a root server, and you don't want
to pay for one, but still want to develop and distribute your own
packages? Well, then there's Launchpad. It's offering PPAs as a service
for exactly that use case. You can basically create your own repository
on Launchpad, and manage your own packages there.
Let's have a look at an illustrating example.
First, assume you want to install theMATE Desktop Environment(a Gnome 2 fork) on Ubuntu Saucy Salamander. It is not contained in the official repos, nor do the devs maintain a PPA. Instead, they have their own repo. You could add it like so:
$ sudo add-apt-repository http://packages.mate-desktop.org/repo/ubuntu
This would result in the following entry being added to/etc/apt/sources.list:
deb http://packages.mate-desktop.org/repo/ubuntu saucy main
Second, assume you also want to have a look atCinnamon(another Gnome 2 fork). This is contained in the official repos since 13.04, but there's still a PPA maintained by the devs, useful for instance if you're interested in getting new releases quicker. You could add it like so:
$ sudo add-apt-repository ppa:gwendal-lebihan-dev/cinnamon-stable
This would result in the following entry being added to/etc/apt/sources.list.d/gwendal-lebihan-dev-cinnamon-stable-saucy.list:
deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
As you can see, the latter entry is quite similar as the one made in
point (1). In fact, both are just URLs of repositories from Ubuntu's
perspective.
In fact, you could even add the Cinnamon PPAwith the same syntax as in point (1), although this is not the typical way for adding PPAs:
$ sudo add-apt-repository http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu
This would result in the following entry being added to/etc/apt/sources.list:
deb http://ppa.launchpad.net/gwendal-lebihan-dev/cinnamon-stable/ubuntu saucy main
This is theexact same entryas in point (2). Only the files that these entries are written to are handled slightly differently, but in the end, it makes no real difference. In both cases, you will end up with the packages from the Cinnamon PPA being available on your system, always after the canonicalsudo apt-get update, of course.