Hallo Nick.
Egal welche Programmiersprache (HTML zähl ich hier jetzt mal mit dazu) Du lernst, wird das beste immer die Praxis sein. Programmieren, ausprobieren, umbauen, wieder probieren,... Natürlich braucht es zuvor einem gewissen Grundverständnis der Sprache. Diese findet man aber schnell im Internet.
Wenn's dann mal kniffliger wird und man in Spezialgebiete einsteigen möchte, dann sind auch mal Nachschlagewerke ganz gut. Bei HTML würde ich SelfHTML als ausreichend betrachten. Leider ist es aber so, dass - wie schon von Dir gesagt - gute Bücher teuer sind. Sind halt nicht viel Abnehmer da.
Grüße aus Würzburg
Julian