Helm is the right tool when you ship the same application to several environments or several clusters and you want a single source of truth with per-environment overrides. It is also the standard way third parties distribute software for Kubernetes, so if you want to run Prometheus, Grafana, cert-manager, or an ingress controller, there is almost always an official chart.
The main cost is the templating. Go template syntax mixed into YAML gets ugly fast, whitespace and indentation bugs are common, and a rendered manifest that looks fine can still be invalid until the API server rejects it. Tools like helm template (render without installing) and helm lint help, but debugging a large chart is real work.
The alternatives matter. Kustomize, which is built into kubectl, takes a different approach: instead of templates it patches plain YAML with overlays, so there is no new templating language to learn, but it has no release history or rollback. Many teams use both, rendering with Helm and then patching with Kustomize, or skip Helm for their own apps and only use it to install other people's software.