Is this the best way to test a specific tag from a repo?
Yes. This is the right way.
How to upgrade to the next version when it becomes available? Just a git check of DRUPAL-6-16?
git checkout master
git pull
git tag
git checkout <tagname>
How can I save my own changes (e.g. changes in .htaccess), and not revert back with every update?
One way is to make all your changes in a separate branch and merge these changes after you have checked the release tag.
What is the best way to add my modules and themes to my local git repository and still be able to update the kernel whenever a new kernel version appears? Do I need to create a branch?
git submodule .