The stacks (state files) are 1:1 with environments - so the real question is how many environments do you want for your deployment. If you want devs to be able to spin up the it own environments for developing new features, they can each have their own stack that they manage locally, and then your production (and possibly staging) environments can be managed by CI.
A little more on related topics:
https://www.pulumi.com/docs/intro/concepts/organizing-stacks-projects/