As I understand, promo-codes expire 4 weeks after generated. You are also given 50 codes per version uploaded.
But, what would happen if you generate a promo
You would get 50 new promo codes for your new version. All promo code are valid for 4 weeks, regardless of version.
After my app crashing mysteriously on the release side, I've been testing my own promo code on a spare iPhone.
It seems that promo codes gives a download of the version the promo code was based on. My app was crashing on its version 2.0, and promo codes of version 2.0 will crash. However, when I erased the app and used a promo code generated from version 2.1, it ran just fine.
edit: confirmed again with yet another two codes. They really do download the version they're generated from.