¡Advertencia, mucho Zend Framework por delante!
Puede manejar fácilmente 1. y 2. con Zend_Acl y Zend_Navigation .
Para el número 3, tendrá que consultar el objeto ACL en su modelo y hacer muchas cosas a mano. También puede utilizar Zend Framework para los formularios e incluir validadores de elementos de formulario específicos según el permiso del rol de los usuarios.
EDITAR:
Si no tiene ganas de seguir la ruta ZF, al menos puede echar un vistazo a cómo se maneja la ACL en ZF.