Think I can answer this - you need to think of your default environment as production. You could buy one Plan 2 license to create a dev environment and one testing(validation) environment, then push to default once they are ready.
When a user logs into and opens up PowerApps, they will see their default environment and apps, if you create your apps in another environment the users will have to switch to that every time in order to open their apps (unless using PowerApps for mobile)
The export/import process is really not that much of a hassle if you aren't producing hundreds of apps and takes +- 5mins tops per commit-to-live.
What I've opted for is:
- On the initial commit we do export / import.
- For any subsequent updates, we:
- Save a local copy of the validated app,
- Click Edit on any app within your default environment,
- Click File>Open>Browse Files,
- Open the local file,
- Check all connectors etc ok,
- Save as and overwrite the production app (as you are opening that local file within default env)
We use SharePoint as a backend, so I'm in a similar situation - we only have 1x P2 license (my admin account) and the rest of the org has E3/F1 licenses. If you aren't going to use on-prem yet or premium connectors, then don't bother with P1's
https://flow.microsoft.com/en-us/pricing/ - if you have 500 users with E3 licenses (or other office licenses which include flow/powerapps), the flow runs are pooled, so you'll have 2000runs x 500 users = 1 million flow runs - unlikely you'll hit that monthly run rate of 2000 per user initially, and if by some miracle you do - you can buy an additional 50k runs for USD40
I'm going to go on record saying that it's too much hassle to do all of this dev/prod environment with PowerApps, (even though I do it because we require it) and the easiest way to handle dev/prod would be to name your apps DEV-Appname and VAL-Appname and Appname within the default environment and control access through App permissions. That way once you have done validation, you can just choose Save As and type Appname and that is then considered a push to live.
Sorry if I rambled on a bit there!
ManCat