A good strategy is to use both (these are complementary tools) - one is stronger for config management (Ansible), the other for provisioning infrastructure (TF). Build and manage the infra itself (instances, security groups, VPCs etc) with TF and use Ansible to configure (e.g. install, maintain nginx on the instance). They work well together since there is a provisioner for Ansible in TF.
Optionally if you go the totally immutable route you may only need TF (plus somethig like packer) and not Ansible.
I have not had to migrate from on to the other, so unfortunately I can't be much help here. Maybe someone else can share their insights on that (including benefits/drawbacks).