Conceptually Joomla already can be headless. The MVC layer is where you'd apply this approach. As long as your controllers and models aren't spitting out anything that would be considered output (beyond the point where our JControllerLegacy::display() method echoes the rendered view because we have a "funny" handler for getting that output into the JDocument buffer), your components can pull off being headless. View classes should be the only point in components that are spitting output and integrating with your presentation layer.
In my experiences, what keeps this from working well is the extensions on one's site. Plugins that try to manipulate JDocument before the component is dispatched (so the initialise and route system events; the JDocument object isn't built until after the app is routed so it can have awareness of stuff from the menu system like the expected response format) are usually what cause sites to not work well with non-HTML output.