I haven't used it with TFS, but I have with SVN. I've limited experience using multiple developers on a doc, but it does work, with the occasional hiccup.
Re the variables. Variable values are "data" and therefore don't get exported to the prj.I believe that was a conscious design decision. I always create my vars in the script for several reasons, this being one of them.
I have recently implemented SVN in our environment and we did see a case where one of our developer lost all its variables definitions from his document. Luckily he had the older backup and was able to retrieve the definitions.
But I am seeing a different behavior with variables in my case. If I have two variables of same name let's say vLastYearSales in two different QlikView files with two different definitions and they both checked into SVN repository. Sometime I see that the vLastYearSales definition in fileA gets replaced with the definition of vLastYearSales in fileB. Totally weird, but today it happened for the third time and now I am thinking this is for real.