Hey,
are you doing the server assignment via a ROC action? if so, it depends on the version you're using, because prior 6.x it was required that the executed user is environmend admin.
other then that, I think this should be doable, I'm not sure though what permission is required to assign servers to an environment.
for the other stuff though, you need to set permissions on process level, so that you allow the one group to run your predeployment process on DEV and PROD, but the processes for the deployment steps are only allowed on the dev.
Same goes for the approvals, you can set these environment specific.
hope this helps,
Michael