und ist das sehr schlimm / unprofessionel ohne umgebende Blockelemente zu arbeiten?
Nicht zwangsläufig. In dem Fall deines Formulars ist es schlimm, weil du mit <br>s eine Suppe zusammengerührt hast, anstatt das Formular semantisch auszuzeichnen und mit CSS zu formatieren.
Das "Problem", welches mich am <p> etc hinderst ist, dass jedesmal ein Absatz generiert wird.
Wahrscheinlich willst du manche Label-Feld-Einheiten nebeneinander anstatt untereinander darstellen. Das ist kein Problem, dafür kannst du dir ein allgemeines Markup-Modell ausdenken und die Mehrspaltigkeit mit CSS umsetzen.
<form>
<p>
<label for="kontakt-name">Name</label>
<input type="text" name="Name" id="kontakt-name"><br>
</p>
<p>
<label for="kontakt-email">Email</label>
<input type="text" size=40 name="Email" id="kontakt-email">
</p>
... usw.
</form>
Wenn du hier nun beide Einheiten nebeneinander darstellen willst, umschließt du z.B. beide p-Elemente mit einem div-Element. Dem gibst du eine Klasse, lässtbeide p-Elemente darin links floaten und wendest einen Clearfix, um sie einzuschließen.
Auch die label-Elemente sind unterschiedlich formatierbar. Standardmäßig werden sie als Inline-Boxen angezeigt, mit display:block kann man jedoch Block-Boxen daraus machen. (Es gibt noch weitere Möglichkeiten wie display:inline-block.)
Mathias