Why the Affero GPL
The GNU Affero General Public License is a modified version of the ordinary GNU GPL version 3. It has one added requirement: if you run the program on a server and let other users communicate with it there, your server must also allow them to download the source code corresponding to the program that it's running. If what's running there is your modified version of the program, the server's users must get the source code as you modified it.
The purpose of the GNU Affero GPL is to prevent a problem that affects developers of free programs that are often used on servers.
Suppose you develop and release a free program under the ordinary GNU GPL. If developer D modifies the program and releases it, the GPL requires him to distribute his version under the GPL too. Thus, if you get a copy of his version, you are free to incorporate some or all of his changes into your own version.
But suppose the program is mainly useful on servers. When D modifies the program, he might very likely run it on his own server and never release copies. Then you would never get a copy of the source code of his version, so you would never have the chance to include his changes in your version. You may not like that outcome.
Using the GNU Affero GPL avoids that outcome. If D runs his version on a server that everyone can use, you too can use it. Assuming he has followed the license requirement to let the server's users download the source code of his version, you can do so, and then you can incorporate his changes into your version. (If he hasn't followed it, you have your lawyer complain to him.)
Both the ordinary GNU GPL, version 3, and the GNU Affero GPL have text allowing you to link together modules under these two licenses in one program.
One problem which the GNU Affero GPL does not address is the problem of Software as a Service (SaaS). It is impossible, as far as we know, to address this problem with a software license. [1]
SaaS means the use of someone's network server, by others, to do work which is their own computing. They have to send their data to the server, which does their computing for them, and sends the results back to them. SaaS is a problem because the users cannot control the computing which the server does for them.
If some program on this server is released under the GNU Affero GPL, it requires that the users have a way to download the corresponding source of that program. That is good, but having this source code does not give them control over the computing the server does for them. It also does not tell them what other software may be running on that server, examining or changing their data in other ways.