La domanda è parecchio complessa e di conseguenza la risposta sarebbe parecchio lunga quindi ti spiego i concetti e poi farai da te.
Per prima cosa le variabili le recuperi dal form tramite $_GET o $_POST poi le scrivi dentro un file di testo che crei appositamente usando le funzioni del file system fopen (per crearlo o aprirlo) e fwrite per scriverci dentro. Una volta fatto questo Usi l'header Content-Disposition e mandi in output il file scritto con la funzione readfile. So che così può sembrare incasinato ma se scomponi i problemi e controlli sulla documentazione un pezzo alla volta vedrai che sarà chiarissimo. Attento all'uso di questo header per alcune incompatibilità tra i vari browser devi aver delle accortezze nella scrittura del codice (quando cerchi informazioni su questa cosa troverai di sicuro spiegato come fare).