3. Wo liegt dann überhaupt der Unterschied von "TImage.Picture := ..." gegenüber "TImage.Picture.Assign(...)"?
Da gibt es keinen Unterschied; intern wird auch bei der direkten Zuweisung Assign() aufgerufen.
Jedes TImage trägt sein eigenes, unabhängiges TPicture in sich.
Wenn du den Resourcenverbrauch nicht möchtest, müsstest du auf mehrere TPaintboxen ausweichen.