Ich dachte float:left bedeutet, dass nachfolgende Elemente dann rechts davon angeornet werden.
Nein, nicht ganz. Ein float-Element wird aus dem normalen Layoutprozess herausgenommen, alle nachfolgenden Blockelemente (grob: Elemente die einen eigenen Absatz bilden, <p>, <hn>, <div> und dergleichen) benehmen sich daher so, als wenn das float-Element nicht vorhanden wäre. Anders die in diesen Blockelementen vorhandenen Textzeilen, nur diese schmälern sich so, dass das float-Element Platz hat.
In http://www.w3.org/TR/REC-CSS2/visuren.html#floats ist das Verhalten genau beschrieben. Das zweite Bild dort verdeutlicht den Prozess recht gut: Die beiden rot umrandeten Absätze haben ganz normale Abmessungen, lediglich die Zeilen darin werden durch das float-<img> verschoben.