Hi Mika,
I think that answers to your questions depend on the project.
In a nutshell: it is my opinion that TestComplete is a tool for functional regression testing, but not something that is worth to be used during active development. Unit testing tools seem to be more suitable for this.
From my experience, I can recollect, probably, only one project where classic test-driven development could be applied. That project was for the mature product with strict, well defined and well documented requirements as for UI and UX behavior. New UI design or UI changes were thoroughly planned initially as well as business flow and nobody was allowed to make changes after that without going through the serious change procedure.
In a 'modern agile' development, when everything change without prior notification, too many efforts will be spend on tests support.
Another point: TestComplete has its own project structure and tests are created using scripting language. This means that developers will have to deal with and support two separate and quite different development environments.
One more point: I had a project once when developers were asked to help with creation of tests. It was an interesting experience for me, because (to my opinion) developers wrote the code that is usual and fine for the application code (and unit tests), but not always fine for functional tests. For example, it was quite usual to see the code like
if (user.exists) then {...}
This is usually fine for the application, but for the functional test quite often 'else' part is required as well to signal that for some reason the user was not found.
Also, it is expected from developers to create a well designed and structured code. While this is also applicable to the functional test code, it is a usual situation when the functional tests *must* be executed within a tight time frame and if test code problems exist (including those caused by design/functionality change) these problems *must* be corrected before the end of the test run. In the situation like this, test code simplicity is often more vital. This means that developers will be forced to maintain 'good and clean' code for the application and switch to somewhat different coding approach and style for tests.
If your tested application is created using .Net, you may consider TestLeft (https://smartbear.com/product/testleft/overview/) that is based on the same technology as TestComplete/TestExecute but is more developer-oriented.