Most of what you asked for is either covered out of the box or you can achieve it by using some PowerShell.
For more details on how to use PowerShell you should consult our documentation page [url=http://documentation.red-gate.com/display/DM2/Using+PowerShell+scripts+in+deployment#]here[/url], but briefly, if you include a PowerShell script with the name PreDeploy.ps1, Deploy.ps1 or PostDeploy.ps1 we will run the PowerShell script at the appropriate point during the deployment. We also have a forum [url=http://www.red-gate.com/messageboard/viewforum.php?f=166]here[/url] where real users have been sharing and discussing PowerShell scripts that they have written.
Given that you can use PowerShell to perform certain actions you could use it to run a SQL script (or set of SQL Scripts) based on the environment that you are deploying to or any other variable. Naturally we would recommend using the native database upgrade logic but if you want to work in this way it is possible. Also, some people use this approach to append a regular DB deployment with some form of pre or post deploy script.
With regards your other suggestions, there is already a PoswerShell example on the forum to take a DB backup as a pre-deploy step [url=http://www.red-gate.com/messageboard/viewtopic.php?t=19545=166]here[/url] and an alternative approach using Red Gate's SQL Backup tool [url=http://www.red-gate.com/messageboard/viewtopic.php?t=18365]here[/url].
Updating the schema could either be done using the default database deployment mechanisms or by running your own SQL scripts via sqlcmd in a PowerShell script.
We don't touch your data by default, although you should be vigilant about the upgrade method that you choose. If you use the default method you will be relying on SQL Compare logic to generate the script so you want to be careful with table re-names etc. There is nothing stopping you from automating a pre-configured SQL Data Compare project from a PowerShell script to compare the pre-deploy backup with the post deploy edition of the DB.
If you want to include specific reference tables in your deployment you can do this in two ways. Either use [url=http://documentation.red-gate.com/display/SOC3/Source-controlling+static+data]the static data feature of SQL Source Control[/url] and create your packages based on your source control version of your DB. (This is the best practice). Or use the SSMS add-in (available from the tools tab in DM) to create your package and select the static data from there.
Let me know if this covers all your requirements.