xz is a program that uses an LZ compression algorithm well suited to executable formats, tar is a program that wraps files up for linear writes onto Tape ARchives. pkg of course is the package manager for arch. Anyways it also saves time, if the file doesn't have a .pkg in the name the file manager doesn't offer up an option to open the file with pkg. You usually only do this though if you are sure the base can call the next program up in the line and rely on it to do the sensible thing (in this case pkg knows how to call tar, and tar knows how to use xz.)
The second two are archival. Tar is an archive file -- what it stores is files in a directory tree. xz is a zipped compressed format. The first one, pkg, is Arch's specific forma like rpms for Red Hat or deb for Debian.