スタック構造はXML(か、それに準じたもの)が良いでしょうね。
XHTMLの拡張版にして、Web対応にできると面白いかな。

JavaとPerlならJavaでしょうね。ObjectiveCはどうなんだろ?
考えていても分からないことは分からないままなので、
作りつつ調べ、理解しつつ構想を練るのが良いと思います。

アイコンデータそのものはリソースに格納されています。
ボタンが持っているのはアイコンの番号だけです。