1) To retain certain resources when deleting a stack, you can use DeletionPolicy attributes in your CloudFormation template (JSON or YAML).
DeletionPolicy options include:
- Retain: You retain the resource in the event of a stack deletion.
- Snapshot: You get a snapshot of the resource before it’s deleted. This option is available only for resources that support snapshots.
- Delete: You delete the resource along with the stack. This is the default outcome if you don’t set a DeletionPolicy.
To keep or copy resources when you delete a stack, you can specify either the Retain or Snapshot policy options.
You can also refer to this link for further review: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html
2) You can use the vpc id of your custom VPC and copy that in the Resources section of the template.
3) I am not totally aware of any particular reason as to why this happens. Please give me some time to look into it and provide you the best solution.
Hope this helps.