Projects in test complete run in isolation and in sequence within the suite. So, if you have a project suite with project 1, 2, and 3 in that order, they will execute in that order, each project in it's entirety. So, you cannot run a test case from project 1 followed by one from project 2, then go back and run a different test case from project 1.
Now, you can share code between projects... this is a standard practice by many TC users. But they are shared code in that they run in isolation within the called project. So, I can run a routine in Project 1... and run the same routine in Project 2... but there is not an awareness in project 2 of what project 1 did.
Now... slight modification... you can use Project Suite level variables to store data from one project to be used in another project but it's not going to work like you described below. It will still be all of project 1 executing before the first test of project 2 runs, just that you will be able to store information to be used across projects. You MIGHT be able to architect things in such a way that this will work for you, but I'm not sure exactly.
Your third option: Investigate Network Suites. This will allow you to run different "jobs" on different machines and synchronize between the jobs. You will have slave projects and master projects so this MIGHT be a way of architecting things to work for you. Worth investigating, for sure.