Unsure which azure terraform gateway to use for vnet to vnet communication as well as vnet to internet communication?

Using Azure Terraform:

Unsure which type of module to use for a virtual gateway to be used to connect a vnet to another vnet. Also need a virtual gateway to provide a vnet access to the internet. I looked at link 2 below however it requires for (resource “azurerm_virtual_network_gateway”) a type = vpn or type = ExpressRoute. We want a gateway within a Azure region without going outside Azure,… is this possible without adding and ExpressRoute between vnets which are within the same region?

Also is it a correct assumption that whenever you have vnet to vnet peering that you need a virtual gateway in each vnet?

Our basic architecture is that onpremise traffic flows to a colocation site (Firewalls) then the traffic goes to vnet_A. From vnet_A (Firewalls) the traffic flows to vnet_B and vnet_C. Both vnet_B and vnet_C
peer to vnet_D. Appreciate any recommendations how to code Azure Terraform?