2.#include は確かに疑問に思うところです。
Google C++スタイルガイドは参考になるかもしれません。
http://www.textdrop.net/google-styleguide-ja/cppguide.xml#%E3%82%A4%E3%83%B3%E3%82%AF%E3%83%AB%E3%83%BC%E3%83%89%E3%81%AE%E5%90%8D%E5%89%8D%E3%81%A8%E9%A0%86%E5%BA%8F
それと、本来のものを格納するために必要な領域が例えば4byteだったとして、これを new して場所を取ったとすると、その場所を指すためのポインタが4byte、newが使う管理領域が8byteとか12byteとか(ここまでの話は32bitマシンを想定)余計に必要です。4byteの領域のためにその何倍もの領域を消費するのは、たぶん素直にデメリットと言っていいんではありませんかね。
なぜか誰もクラス設計に触れないけど...
せっかく class を使うのであれば CPuyo class だけでなく CStage class と CBlock class を用意し、CPuyo class は1つの CStage object と 0 個以上の CBlock object を所有する構成でクラス設計するのはいかがでしょうか?
CoinEx.cppとCoinEx.hはキー入力を拡張していますが、例えば左キーを's'キーだと誤魔化しているわけです。このようなことをしないためには、例えば s キーを押したということを、一旦ぷよぷよを左に移動させる入力が発生したということに置き換える必要があります。こうすれば入力キーを変更することが容易になります。可読性も向上するでしょうが、記述量が増えているので慣れが必要です。