CMS stands for Content Management System. It is a software that allows you to create, manage, modify and publish content in a user-friendly interface.
You can build websites from scratch without any programming skills. And for most people it's easier to communicate and interact with a CMS than hard-coding every text in HTML. A good CMS also provides features like SEO, collaboration, load time optimization, pre-designed templates and more.
As developers we often times prefer to code a website from scratch, but a client would still need a CMS to publish and edit content.
So we build the page around a so called headless CMS.
A headless CMS is a back-end only content management system built from the ground up as a content repository that makes content accessible via a RESTful API or GraphQL API for display on any device - as Storyblok describes in their article. Let's take a blog for example. The developer creates a fancy blog page with a bunch of custom styles no traditional CMS could ever achieve. The client then writes a blog post in a Google Docs like Interface and saves it to the database. The dev asks the headless CMS API for this blog post and writes it out to the page.