Du musst zwei Dinge unterscheiden: Erstellen eines neuen Bitmaps und verändern eines bestehenden Bitmaps. Ein Bitmap neu zu erstellen ist sehr teuer (siehst ja auf deiner Festplatte, wie viel Speicher allein ein kleines bmp einnimmt). Darum verändern die Bitmapmethoden eigentlich alle ein bestehendes Bitmap, statt ein neues zu erstellen.
RPG:ache ist im Grunde genommen nur eine Art Speicher, wo Bitmaps zwischengelagert werden. Immer wenn du eine Grafikdatei laden willst (z.B. ein Icon) wird in RPG:ache nachgesehn, ob diese Grafik schon einmal geladen wurde. Ist das der Fall, wird die bereits geladene Grafik genommen, ansonsten wird die Grafik neu geladen. Auf diese Weise muss also nicht bei jedem RPG:ache.icon("foo.png") die Grafik foo.png neu geladen werden und es ist nur ein einziges Bitmap im Speicher, welches diese Grafik enthält.
Willst du übrigens ein leeres Bitmap erzeugen, verwendest du Bitmap.new(weite, hoehe)
Methoden wie draw_text, blt, stretch_blt usw. verändern dagegen ein bereits existierendes Bitmap. draw_text schreibt auf ein Bitmap einen Schriftzug drauf.
So ganz richtig ist das trotzdem noch nicht. Du kannst dir überlegen, dass an vielen Stellen des Spiels das Icon angezeigt werden soll. Und du weißt, dass RPG:ache das Bitmap-Icon zwischenspeichert und nicht nochmal neu lädt. Wenn du also aus dem Cache das Icon holst und es veränderst, werden alle weiteren Skripte im Spiel dieses veränderte Icon nutzen. Du hast dann also im Item-, im Skillmenü, im Kampf usw. überall wo das Icon "Icon001" vorkommt, plötzlich den Schriftzug drauf.
Darum muss man, will man ein RPG:ache Bitmap verwenden und anschließend verändern, dieses vorher kopieren.