1 - Gestor de alarmas para invocar apps en cierto momento aunque no estén en ejecución
http://developer.android.com/referen...rmManager.html
2 - Un servidor (o cientos si quieres hacer el próximo whatsapp

) y el sevicio de notificaciones push de Google:
http://developer.android.com/google/gcm/index.html
EDITO: Sobre tecnologías para desarrollar la parte de servidor, tienes más o menos infinitas... en otros tantos lenguajes, ya sea PHP, Java, Python, Ruby on Rails, javascript (node.js), C#,... con sus diferentes frameworks si quieres y otras tantas tecnologías de bases de datos (MySQL quizá la más habitual, bases de datos NoSQL como MongoDB, servicios en la nube como Amazon SimpleDB, etc.).
Con cualquier tutorial de PHP + MySQL aprenderás a hacer un chat sencillo o un muro para pocos usuarios. Si luego quieres añadir push y que escale a millones de usuarios ya son palabras mayores y hace falta diseñar una arquitectura apropiada para evitar la muerte por éxito de la app.