UTF-8 (Unicode Transport Format, wenn ich mich recht erinnere) ist lediglich eine Möglichkeit Unicode zu kodieren. Normalerweise braucht man 16 Bit um Unicode zu transportieren, bei UTF-8 werden dann aber Folgen von 8Bit-Zeichen verwendet. Die Zeichen 0-127 sind ganz normal ASCII, aber alles was der höchstwertige Bit gesetzt hat, gehört dann zur Codierung. Damit das ganze richtig Spassig wird, sind Unicode-Zeichen in UTF-8 repräsentiert auch noch unterschiedlich lang (-> http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8).
UTF steht für "Unicode Transformation Format". Unicode benutzt Code-Positionen von U+0000 bis U+10FFFF, das sind 21 Bit, nicht 16. Die Code-Positionen 0-127 gehören ebenso zur "Codierung", wie alle anderen Positionen auch.
ISO-8859-1 ist ein Zeichensatz, der für 8Bit-Zeichen (also 0-255) festlegt, welche Zeichen auf welchen Positionen liegen - die Zeichen 0-127 entsprechen übrigens auch ASCII - und wird für Westeuropa und Amerika verwendet (-> http://selfhtml.teamone.de/inter/zeichensaetze.htm).
ISO/IEC 8859-1:1998 ist ein Internationaler Standard. In dem werden zwei Dinge festgelegt, ein Zeichenrepertoire und eine Kodierung für diese Zeichen. ISO-8859-1 ist der Name dieser Kodierung.
Der Unterschied kurz und bündig: UTF-8 legt eine eineindeutige Abbildung von einem Strom von 8bit-Zeichen auf einen Strom von 16bit-Zeichen fest. ISO-8859-1 ist ein Zeichensatz.
Das ist nun aber völlig falsch, sowohl ISO-8859-1 und UTF-8 sind Zeichenkodierungen. Eine Zeichenkodierung ermöglicht die Abbildung von Code-Positionen auf eine Byte-Sequenz. So etwas wie "8/16-Bit-Zeichen" gibt es nicht.