Regarding these two Terraform GCP resources : google_project_iam and google_service_account_iam
I can't fully grasp the differences and use cases were you should use one over the other. I might have one, where you would want to create a workloadIdentity only through google_service_account_iam (as in this topic: How to create the GCP workload identity IAM bindings in Terraform?).
Within these two types of resources, I also do not fully understand the differences between the iam possibilities there: "iam_policy, iam_binding, iam_member"
Does anyone has uses cases where you would want/need one over the other in a google_project_iam context? And regarding a google_service_account_iam context?
I will try to dissipate the fog, but I totally agree: it's unclear!
For your first question:
For the 2nd question, it's pretty easy, it's in the terraform documentation. But let me summarise:
With the 2 first one, you delete the existing configuration (things done manually or stuff like that). Therefore, if you are not sure about your terraform, you can lose access to the resource (especially at the project level!)