Microsoft has a quick start guide which is a great place to start.
https://learn.microsoft.com/en-us/azure/private-link/create-private-endpoint-terraform?tabs=azure-cli
There are a couple considerations that you need to think about... like how you want your network laid out. Do you want all your vnets sharing the same private dns zones (this is DEFINITELY the easiest)? Do you want a zone per vnet? etc. For example, I have a hub and spoke network where each of my spokes have a private zone. But, I use terraform agents on my hub network to do work in my spokes so I create 2 private endpoints per resource. One in the spoke private DNS and one in the hub private dns.
Another consideration is the fact that in Azure the api is often split up in two levels.
1. the management control plane
2. the data control plane
Private endpoints do not effect the first, but do effect the second. Therefore, TF can often create a resource that has a private endpoint, but not be able to access it if the private endpoint isn't setup correctly. Furthermore, because TF often has to get a resource's state before changing it (like in a destroy), TF often becomes unable to modify or destroy a resource with a failed or non-existing endpoint.