I think in general we can classify websites into 3 categories: static sites with no dynamic content, static sites with dynamic content (through, for example, REST API calls), and non-static sites (where the delivered HTML/front-end code is server-generated).
When there is no dynamic content, using a static site tends to make the most sense. For example, a WordPress site with no moving parts (i.e. no comments) can be easily converted into a purely static site, though adding a cache in front achieves basically the same result.
Things get more complicated when a site or app needs dynamic content. Using API calls, the server doesn't need to generate the HTML every time, but performance-wise, you would also need to factor in the additional round-trips performed to fetch the data.