Depends on the app/framework but typically phantom threads don’t get started. Also, those stacks aren’t materialized until you write something - they’re all CoW’ed pages from a sentinel 0-filled page the kernel keeps around just for this purpose.

It's been a while, but I believe Windows initialises an internal thread pool & parallelises (some parts of) process start / module loading

You’re right. I hadn’t realized that Windows creates a hidden thread pool under the hood for parallelized DLL loading.