Your questions are interesting but off-topic.
In a nutshell, here is what Headless CMS is:
plone.restapi to your buildout
- Install it
- Optionally, disable all front-end access to the current Plone UI
That's it. Now try to imagine the possibilities. Plone becomes the backend, plone.restapi gives you JSON access to it, and you (or someone) build an application on top of it, which does not necessarily have to be a CMS.
This is not a new version of Plone. Nobody is changing the UI, UX or the JS (yet, though there were discussions at PLOG about the resource registry, but that is completely unrelated to headless, and I'm sure there will be a separate report). It is a different offering with "Plone inside". In the short/medium term, this is not going to impact current users, integrators, developers and clients in the least. Nobody is required to relearn anything or upgrade to anything. It's a different market, and if you want to play in it, then you can learn plone.restapi and use it for the framework of your choice.
Here are the use cases for Plone + plone.restapi:
- Plone classic, as we know it and love it. Same market, same clients, same users, same problems. But you can already make REST calls for your own purposes.
- Build a different public front end, and use the classic Plone UI as its "admin interface" for editors.
- Ignore the Plone UI completely, build everything from scratch.
Victor and Timo's post also talks about switching backends, so that's another aspect. We'll see.
In the long term, the availability of this model will no doubt spark changes in the Plone UI itself, and then your questions will be relevant. In particular, I think nobody really has an answer to how add-ons will need to be written to plug in to Plone in this model. We are just not there yet. However, there are already experiments under way, for example, Rob Gietema is rewriting the Barceloneta UI in React. But I'm not sure if this is anything more than a demo, cool as it is. But I think it's too early to freak out.