Is there support for workflow-level variables, where each created instance is provisioned with these variables? similarly are there broker-level variables, where any workflow, and created instance is provisioned with?
The use case here being deploy on multiple environments, where same workflow gets a different configuration, and hands over that to any workers
The short answer is: no.
Variables are always bound to a workflow instance scope. Currently, this needs to be implemented by the applications itself.
I would do this with templated strings in custom headers on a service task, and before deploying the workflow definition to an environment, replace the templated strings with the variables for the environment.
You could use XSLT or even straight-up string templating.