The most outer boundary in TFS is a Team Project Collection. You cannot share code / branches between Team Project Collections. You can however share code between team projects that exist in one collection. From experience, i would suggest you have one Team Project per product, which can house all the different versions of each product.
Having separate folders for the trunk/root of each version would be a good start and give you the correct isolation for a per version branch strategy going forward.
Just to point out - you dont have to migrate a solution to Visual Studio 2012 to use TFS 2012. There is an update for VS 2010 that enables it to work with TFS 2012 and one for VS 2008 also. Support for VS 2005 was mentioned, and there is a workaround.