Il y a un truc curieux dans ton code, mais avant ça voilà des réponses à quelques-unes de tes questions :
[ul][li]Pourquoi veux-tu préciser le nom du fichier dans Content-Type ? Tu n'as besoin d'indiquer que le type MIME et éventuellement le charset ici, donc $data1 est inutile[/li]
[li]Pour $data2 (qui lui est bien placé), attention à bien échapper la chaine (avec ton code actuel, ça risque de bugger si un fichier contient des guillemets)[/li]
[li]C'est $data2 qui contient le nom par défaut du fichier (celui proposé à l'utilisateur au moment d'enregistrer le fichier)[/li]
[li]Les "informations" (headers HTTP) peuvent être envoyées dans n'importe quel ordre, ça n'a pas d'importance[/li][/ul]Je reviens sur la dernière ligne, ton "Location:". Ce header est une redirection, et va demander au navigateur de se déplacer vers une nouvelle adresse (celle indiquée par ta variable $data3). Tous les headers que tu as définis avant sont donc inutiles : ils caractérisent le contenu qui est censé suivre mais tu n'en envoies aucun et tu fais une redirection à la place. Ce sont les headers envoyés à la nouvelle adresse ($data3) qui vont être pris en compte (en l'occurrence, probablement les headers que ton serveur web va envoyer par défaut). Ta solution présente un autre problème : elle laisse apparaître à l'utilisateur le "vrai" lien vers le fichier ($data3).
Il me semble que tu devrais plutôt regarder du coté de la fonction "readfile", pour envoyer le contenu du fichier ($data3) au navigateur mais sans effectuer de redirection et donc en conservant les paramètres que tu as spécifié avec tes headers. Il te manquera aussi un header Content-Length qui indique la quantité de données que tu vas envoyer (c'est à dire la taille de ton fichier) et éventuellement un Content-Transfer-Encoding pour indiquer que tu envoies des données binaires.
Dernière précision : sur yAronet comme en HTML, il faut mettre des [ul] autour des [li], sinon ça s'affiche n'importe comment ^^
(comme ça on peut terminer par une petite blagounette : "il manque ul dans ton li", merci Nil
)