Almost four years ago I wrote https://www.bridgeba...mptive-bidding/. I no longer fully stand by it, but it's still very reasonable and goes into a lot of detail on what I look at for preempting. I think the decision of which hands to preempt with, which ones to pass, and what level to preempt to if deciding to open is fascinating, difficult, and generally not given enough consideration.
My strong belief that 5 card weak 2's are profitable even when vulnerable, even in second seat, goes against some current wisdom. An extremely preempt-suitable hand like ♠KQT9x, ♥-, ♦Txxx, ♣xxxx is a clear 2♠ opening for me in second seat unfavourable, but so is the more radical ♠QJTxx, ♥x, ♦xxxx, ♣xxx.
The lower bound for the weak 2 also means I open at the 3-level more often on six. Most weak hands with a 6-4 are worthy of consideration to open at the 3-level, especially if the suit is decent. There is an increased risk when choosing to open at the 2-level with such hands as my partner might fail to raise my 2-level opening holding (say) a balanced 16-count. All vulnerable, first seat, something like ♠xx, ♥KQJxxx, ♦x, ♣Jxxx is a clear 3♥ for me. In general though I think there are more gains to be had from opening at the 2-level in particular than in moving hands from the 2-level to the 3-level. Not only does it consume more bidding space (from 'pass' to, say, 2♦ instead of from 2♦ to 3♦), the risk is lower and the frequency of being dealt a potentially suitable hand is much higher. Relatively speaking, my 3-level openings are more conservative than my 2-level openings.
My 2NT gadget works as follows. Note that it differs (slightly) over a 2♦ opening showing a weak hand with diamonds, as now there's two unbid majors.
Over 2M:
Spoiler
2M-2NT*; ?
3♣: 5-card suit, not a 3M bid.
3♦: 6-card suit, minimum.
3oM: 6-card suit, maximum, at most 2 cards in the other major.
3M: 5-card suit, minimum, at most 2 cards in the other major (worst possible hand).
3NT: 6-card suit, maximum, at least 3 cards in the other major.
2M-2NT*; 3♣-?
3♦: Range ask, 3M is the min (and therefore shows 3(+)oM), 3NT the max with 3(+)coM, 3oM the max with at most 2 in the other major.
3oM: GF, natural, 5(+) cards. Note: this is slightly superfluous but easy to remember.
3M: Signoff opposite a minimum. Pull to 3NT (or 3♠, if still available) with a maximum, where bidding 3♠ shows at most 2 cards in that suit.
3NT: To play.
2N-2NT*; 3♦-?
3oM: GF, natural, 5(+) cards.
3M: Signoff.
3NT: To play (apparently 2NT was a slam try).
Over 2♦:
Spoiler
On 2♦-2NT*; ? the structure is less efficient but still works reasonably:
3♣: Any 5-card suit.
3♦: 6-card suit, minimum.
3♥: 6-card suit, maximum, at most 2 cards in hearts.
3♠: 6-card suit, maximum, 3(+)♥, at most 2 cards in spades.
3NT: 6-card suit, maximum, at least 3-3 in the majors.
2♦-2NT*; 3♣-?
3♦: To play opposite a minimum. Opener will bid on with a maximum, using the same 'bypass-the-majors-you-have' scheme as before.
3♥: GF, natural, 5(+) cards.
3♠: GF, natural, 5(+) cards.
3NT: To play.
It might be possible to improve on this. Unlike when opener holds a major suit the need to know whether opener has 5 or 6 is less impactful, though still valuable. However, I'm satisfied with this scheme for now.
I play changes of suit over these 2-level openings as not forcing, including e.g. 2♠-3♥ and 2♦-3♣. You can eliminate the need to show some hand types by making these forcing, freeing up a few non-asking sequences in the 2NT scheme. However, I think this is worse, and the NF changes of suit are much more profitable than the 2NT complex can be in the long run.