The actual library is .so.2.0. Then we have .so.2 which is a symbolic link to .so.2.0, and .so which is a link to .so.2. Which one you refer to depends on your needs: if you don't care at all about the version number, you link to .so, regardless what it points to. If you need to use version 2.x, you link to .so.2, regardless the minor version number. If you need a very specific version, let's say 2.0, because your program can only work with this version, then you link to .so.2.0.
I hope it's clear enough. If it's not, there should be better articles about the naming conventions, and how to manage versions of shared libraries on Linux.