Static sites are easy to create, if the right tools are used, it is a great way to build websites are serving web content, because it does not require any pre-processing of special setup, it can run on any base Web Server.
It takes a lesser resource because it’s just static files, no server side response or rendering to be done.
It has a shorter downtime and a faster response time, it does not require a Database to fetch content, so it doesn’t rely on a backend or Database. It is safer because Database and server side hacks don’t work on them.
There are many ways to create a static site, but only a few are beginner friendly, like Jekyll a blog-aware static site generator written in Ruby that uses Markdown of writing content and Liquid for logical templating, it has a well written documentation, that can be a very good place for beginners.
Jekyll is also one of the most popular static site generator and powers most of the GitHub Pages websites, it is not the only one, it’s just popular due to the functionality and simplicity it offers. here is a list of all the static site generators.
The good thing about these static site generators are, that there are so many of them, that offers various different functionality and features, written in various languages, they give you freedom and comfort to choose and let you choose it based on which language you know better.
So, you don’t have to stick to Jekyll, if you like Python, you can use Pelican or if you are Gopher(Golang coder) you can use Hugo.
Static sites are a good alternative, to Database driven and Flat File CMS.
It is a great choice, if you want to have a blog or portfolio, that does not need a fancy backend
Pre-processing can be done, when compiling files into static content, for example using of Sass or Less for stylesheets, use of Markdown for web content, logical templating for generating a difference in pages being generated. All the pre-processing that has to be done, is done while before or while compiling.
It can be dynamic too if you use dynamic, async client side scripts, you can fetch web content, dynamically.
The only downside is that it does not work for everyone, especially people who would like to use an admin interface, that can do things serve sided, like login and signup pages and front end editing for web content.