What is the difference between a resource parameter (name = "servername01") versus using a tag (name = "servername01"?

What is the difference between a resource parameter (name = “”) versus using a “tag” (name = “servername01”)?

Also is there any reason to have “Operating System” and “Backup Retention” in quotes ("")? The other tags below only have “” around the value (ie. “production”, “webserver”, “True”,… )
"Operating System" = “RHEL 7.7”
"Backup Retention" = “Standard”

Also getting an error for subnet_id when attempting to post this question: “Double subscripts: use braces to clarify”? I tried adding braces around the value ["${var.subnet_vdms_internal_b_id}"] but this error still persist. The braces request does not make sense because this subnet_id is for a unique non overlapping subnet ( there is only one identifier for this subnet )

resource “azurerm_virtual_machine” “servername01” {
name = "servername01"
location = “{var.location}" resource_group_name = "{azurerm_resource_group.vdms.name}”
subnet_id = “{var.subnet_vdms_internal_b_id}" vm_size = "Standard_D16s_v3" network_interface_ids ["{azurerm_network_interface.nicsservername01.id}”]

tags = {
Backup = “True”
“Backup Retention” = “Standard”
Critical = “True”
Environment = “Production”
Name = "servername01"
“Operating System” = “RHEL 7.7”
Owner = “Test”
“Patch Window Day” = “Tuesday”
Purpose = “Web Server”
Reboot = “Auto”
}