Bueno .. la función mail() no es que sea "limitada", el problema es que no implementa muchas funcionalidades del uso típico de envio de e-mails "por defecto" como por ejemplo adjuntar un archivo, enviar el e-mail en HTML, definir cabeceras en general del e-mail .. etc. Todo esto se hace "manualmanete" y según uno conozca el protocolo de e-mail (que está descrito en sus RFC's correspóndientes).
Pero .. como aquí no vamos a reinventar niguna rueda más .. existen excelentes classes para solventar o complementar lo que mail() no hace. Por ejemplo:
PHPMailer
http://phpmailer.sourceforge.net
Con eso tienes resuelto el hecho de enviar un e-mail: con archivos adjuntos, en HTML, con imagenes incrustradas, enviado por SMTP directo (permite hasta autentificación) .. etc.
Por lo demás esta classe es sólo de "envio del e-mail" .. Otra cosa será como tu crees tus formularios y compongas tu cuerpo del mensaje .. o como gestiones sus envios. PHPMailer es la "herramienta" .. tu debes saber "aplicarla".
Un saludo,