O Google Cloud Messaging (GCM) para Android oferece a possibilidade de introduzir um broker ou intermediário entre o servidor de aplicações e dispositivos Android, garantindo uma comunicação na nuvem escalável entre as duas partes. O serviço define um "contrato" para que a aplicação rodando no servidor e a aplicação Android se registrem, e os servidores do Google mantenham a comunicação entre eles. Os servidores GCM ainda tratam todos os aspectos de fila e envio de mensagens, para os aplicativos rodando em dispositivos Android.
O GCM oferece várias outras funcionalidades. Por exemplo, com ele o dispositivo Android não precisa fazer requisições de tempos em tempos para receber novas mensagens (polling). Ao invés disso, os servidores GCM enviam os dados, via push, para os dispositivos registrados no momento em que a mensagem chegar aos servidores GCM.
Por evitar requisições desnecessárias, a aplicação não precisa estar em execução para receber mensagens. E se criada da forma correta, a aplicação pode ser iniciada ao receber um broadcast quando a mensagem chegar ao dispositivo, o que acaba economizando bateria.
O serviço GCM agora faz parte das APIs do Google (como Maps, Cloud SQL etc.), disponível no Console de APIs. O que diferencia o serviço GCM das demais APIs, além de ser totalmente gratuito, é que não há limites ou cotas diárias para envio de mensagens ou para a quantidade de dispositivos registrados.
O serviço C2DM foi oficialmente marcado como obsoleto em 26 de junho, o que indica que em qualquer momento pode ser desligado, e sem aviso prévio. Apesar de o C2DM não ser compatível com o GCM, a migração entre os dois pode ser feita de forma simples. Além de vários posts em blogs de desenvolvimento sobre como substituir o C2DM pelo GCM e migrar do C2DM para o GCM, existe um documento no site oficial de desenvolvimento para Android, chamado C2DM-to-GCM, com informações de como fazer a migração
Além da detalhada documentação técnica do GCM, há muitas informações online sobre o assunto. O Stack Overflow possui uma série de perguntas e respostas sobre como trabalhar com o GCM. Também está disponível online a apresentação feita no Google I/O de 2012, de aproximadamente 1 hora, GCM platform, por Francesco Nerieri.