You’re right that preview environments are different from PR previews. PR previews only create a preview instance of the service they are for and are only available for web and static services. They DO NOT create separate databases, they would use the same environment variables as the parent instance as detailed in https://render.com/docs/pull-request-previews#how-pull-request-previews-work.
Preview environments use your render.yaml definition and create preview instances of all your defined services and databases. So if you have a web service and a database defined, you would get a preview environment which contains these 2 services and then when the pull request is merged the environment is destroyed. If your webservice refers to the connection string of the database in the render.yaml then when the preview environment is created then the preview environment webservice will be linked to the preview environment database that was created for you. Also, preview environments support the plan overrides as detailed at https://render.com/docs/preview-environments#override-preview-plans.
Personally, I would always use preview environments, I don’t think I’ve ever used a PR preview myself,