Hi,
From the technical point of view, there is no limitation on the number of (temporary) project variables. (Well, at least no one reported such problem here yet.)
However, XPath and Page Object are far not the best practices in TestComplete's world.
It is much better to use .FindXXX() and .WaitXXX() methods provided by TestComplete (.FindChild(), WaitWindow(), .WaitButton(), etc.) instead of XPath.
TestComplete provides you with Objects Tree that is effective replacement of the Page Object model. And exceeds it if NameMapping and Aliases are used. https://support.smartbear.com/screencasts/testcomplete/reliable-tests-for-dynamic-objects/ is a recommended video to get a good understanding of NameMapping and the whole https://support.smartbear.com/screencasts/testcomplete/ page is worth to be bookmarked as well.
One more note: Unlike Selenium, Appium, ..., TestComplete provides fantastic documentation that is really worth detailed reading. At least, I would recommend to go through the description of every function that you will use in your test code to get better understanding of how it works and be aware about its specifics.
A little-bit extreme summary: the sooner you will forget about Selenium practices and move to Aliases and .FindXXX() the better will be your test code. :)