The Deployment Framework does not support creating a new IIS web site. However, you can add a Target to your .btdfproj named CustomDeployTarget, and inside it use an Exec task to call appcmd.exe for IIS 7 or cscript.exe with adsutil.vbs for
IIS 6 -- or a PowerShell script or a custom app that creates the website. Your preference how you want to handle it.

Then add an MSBuild property to your .btdfproj named IISMetabasePath and pass the metabase path of your new website, like IIS://localhost/w3svc/1/Root (the Default Web Site and the default value of the property).

Without actually testing it, and assuming that you have the parameters to AppCmd correct, your Step 1 looks about right. I think you might have to change %systemroot% to $(systemroot). FYI, the % vs. $ on the property references causes MSBuild
to call the task repeatedly for each VDirList ItemGroup.

The missing step to full automation is to read in the metabase path for the newly created website and dynamically set it into the IISMetabasePath property. You can do that in a custom MSBuild task, or there might be something included in the SdcTasks
task library (from CodePlex) which is already included in the Deployment Framework. You can look at lots of examples of custom MSBuild tasks in our source code. There are also lots of them available online. This would show up in the
.btdfproj as one additional task called after the ones you included above. If you did that, then you could let the regular BTDF IIS deployment proceed as it normally does (you'd have to set the property at undeploy time too with a CustomUnDeployTarget
target).

On the other hand, if you statically defined the metabase path, then you would include <IISMetabasePath>IIS://localhost/w3svc/25/Root/<websitename></IISMetabasePath> in the first PropertyGroup in your .btdfproj.