Auf Form-Action "mailto" wird nicht funktionieren. Formular absenden = Formular irgendwo in irgend einer Form auswerten lassen. Das heißt: Deine SERVER-Anwendung muss die Formulardaten auf Sauberkeit prüfen, die Mail zusammenstellen und dann verschicken. Wenn du dafür PHP einsetzen willst, dann wäre mindestens mail() notwendig, eher aber eine Bibliothek, die per SMTP-Auth versendet.
Was <label for="blabla"> angeht: Dieses "blabla" muss es dann auch als Name eines <input> geben. Anders würde ja keine Zuordnung zwischen Beschriftung und Feld geben. Wäre irgendwie blöd, oder? Da beschreibst du etwas, und das Etwas das du beschreibst, existiert in der Form gar nicht oder irgendwo ganz anders...
<legend>... kann man durchaus einsetzen, genau wie <fieldset>. Aber die Regel heißt trotzdem: KISS - Keep It Simple, Stupid. Schreib nicht mehr HTML, als für das SEMANTISCHE Verständnis notwendig ist. Schreib auch keine <div>-Orgien. Lass alles weg. Wenn du eh nur eine "Gruppe" von Eingabefeldern hast, dann ist ein Fieldset, und somit auch die Legende, recht überflüssig. Fieldsets machen dann sinn, wenn du Felder wirklich mal gruppieren willst, weil sie zusammen gehören. Wenn du z.B. Radio Buttons oder Checkboxes verwendest, dann macht ein umhüllendes Fieldset wirklich Sinn.
<label> soll nicht leer sein. Wenn du über ein Submit-Feld nichts beschreibendes zu sagen hast, dann leg kein Label an. Ist doch Verschwendung, oder?
<textarea> sollte eien Angabe für Zeilen und Spalten erhalten. In HTML5 ist das nicht mehr verpflichtend, aber immer noch ziemlich nett.