Isso é o que consegui reunir até agora:
Os aplicativos se comunicam com algum tipo de API privada para o processo WindowServer, o processo WindowServer é aquele que realmente obtém eventos de hardware (mouse, teclado) e despacha esses para os aplicativos clientes. (isso ainda é uma questão em aberto: qual protocolo eles usam, se algum, eles usam portas Mach e MIG, ou alguma API baseada em Socket, não tenho certeza).
Algumas informações estão aqui:
O WindowServer é o Compositor de Quartzo. Normalmente, os aplicativos usam a API Quartz2D, que é exposta na API CoreGraphics (CGXXX funtions). As aplicações criam "Contextos" do CoreGraphics (CGContext) e desenham lá. Se o contexto é empurrado quando é feito um grande bitmap, ou se as operações são enviadas para o servidor como se estivessem no X11, ainda é uma questão em aberto.
Existe uma API limitada exposta para controlar certos aspectos do processo WindowServer, o tipo de configuração que normalmente é feito a partir do aplicativo Configurações, mas não há documentação sobre como os aplicativos realmente comunicam solicitações gráficas ou bombeiam mensagens do servidor , além das APIs de carbono / cacau expostas.