ARM templates and Terraform are both Infrastructure as Code tools for deploying cloud resources. A very high level summary of the differences is below
ARM Templates
- Azure specific
- Get the latest Azure resources as they are released
- Does not maintain a state file
- Written in JSON
- Does not have a Destroy/Cleanup command
Terraform
- Supports multiple cloud providers and on-prem resources
- Can lag behind when new Azure resources are released
- Relies on a state file that must be maintained
- Written in HCL, a custom DSL from Hashicorp
- Able to cleanup/destroy resources
Both tools can be used to create resources in Azure, they both have positives and negatives compared to each other.