Hola, algo que a mi me ha servido para algo como lo que pides ha sido el módulo "Conditional Fields".
Dependiendo de lo que el usuario seleccione de una lista o las casillas que marque, le aparecerán otros campos, no es muy complicado de usar, si necesitas ayuda pregunta y te digo como.
Saludos!