There has always been some confusion regarding the difference between GPLv2 & GPLv3. Here are the key differences:
What changed in GPLv3?
The FSF tried to add more clarity to GPLv3 as to when the reciprocity obligation is triggered. The FSF even wrote a new GPL license, the Affero license, to address the "ASP loophole".
In addition, the FSF decided to improve the compatibility of the GPLv3 with other licenses. To combine two codes into a larger work, both applications must permit it. If those rights are imparted by both the programs' licenses, they are compatible. By making the GPLv3 more compatible, the FSF increased development options.
The third difference between the two versions is that the GPLv3 was written in an effort to increase usage globally. The language used in GPLv3 to describe the license rights was modified to ensure that international laws will interpret it as the FSF intended, unlike the language used in GPLv2. GPLv3 also permits developers to add local disclaimers, which also helps to grow its usage outside the US.