Una label senza contenuto e senza for non ha significato per chi non vede la parte grafica del form (vedi ad esempio http://w3schools.com/tags/tag_label.asp ), quindi e` contrario all'accessibilita`.
I fieldset si possono innestare: a mio parere dentro i form e` piu` corretto usare i filedset, anziche` i div, ma questa e` la mia idea: altri usano correntemente anche i div.
Attenzione che ci sono errori di sintassi: il campo input non ha tag di chiusura, quindi il tuo
<input type="text"></input>
va scritto
<input type="text" />
Inoltre il tag <button> senza eventi JS e` inutile (mentre se usi JS la cosa non e` accessibile): se vuoi fare una cosa accessibile usa invece il tag <input type="submit" ...> (oppure type="image") che si puo` usare anche senza JS.
Oppure puoi inserire un <input type="submit"> dentro un'area <noscript>