For programming, just try out different things and use whichever one works best for you. It's all opinion.
As for stage design, that's much tougher, and the hardest thing to do for a game. You can have the best engine ever, but if your stages suck, then the game will suck too. Obviously there's no definitive way to make good stages, but there's some general tips you can follow. Since you didn't specify what kind of game you want, the tips will be rather general.
First, the big thing, even though it's not exactly stage design related - don't create a game, create an experience. Think about what you want your player to feel when playing the game, and build the game around that. Don't just put together a bunch of gameplay mechanics and hope they work well together.
Kirby's Epic Yarn is a great example of this. The creators thought "we want to overflow the player with extreme amounts of cuteness" and made sure every aspect of the game fit that. There's no death in the game, since death leads to frustration, and frustration isn't cute. Every stage has distinctly different graphics and themes, so even if the game is fairly short, there's never a point where you don't find a new cute thing to look at. The story is extremely cheesy and basic, like a children's book, since children's books are cute. Even opening a new level has a unique cute animation for each stage, even though it serves no gameplay purpose - it's just there for more cuteness. There's even collectible pointless cute items in every stage, just because.
If your game is about a badass action hero - say, Samus or Mega Man - make sure the rest of the game fits that. Make the player feel like a badass too. Give them awesome weapons and lots of firepower, and never have any breaks in the action that are longer than 30 seconds.
Okay, so now onto stage design tips. You already touched on most of them in the original post. The big thing is to never have a dull moment. However, what defines a "dull moment"? That's the part that most people don't understand. To me, a dull moment is any time in gameplay where I don't have to make a decision. Deciding whether to jump over an enemy or shoot it is a good example. It's even better if you also have to decide which weapon to use or whether you need to go that way at all. The thing is, if you use the same enemy multiple times, it's not boring specifically because it's repetitive - it's boring because after the first few, you already know the optimal strategy, so there's no decision-making involved. It's okay to use the same enemy a lot as long as the strategy for that enemy changes - like putting it on higher ground so it's more difficult to shoot, or giving it another enemy type as a guard so they work together.
This also applies on the macro level (going back into general game design) - take the shorter but harder path, or take the easier route? Or, as a specific example, beat Air Man first because the jet makes platforming easier, or beat Wood Man before that so you get his weapon, which is Air Man's weakness? Those kind of things are good design. However, using Mega Man as the example again, Metal Man is bad design. He's the easiest boss and he gives you the best weapon, so there's absolutely no reason to not kill him first. You want to prevent that.
Back into stage design, variety is key, but don't overdo it. If your game is a platformer, you don't need to make the final boss a danmaku shooter. You want each stage to be unique and memorable. Nobody really cares if a game is short as long as it's fun the whole way through: look at Portal. It's very short, but every moment of the game is polished and serves a purpose, so it became a huge hit. If it was twice as long but didn't introduce any new gameplay mechanics during that other half, it wouldn't have been as good. If something is just "filler" and serves no gameplay purpose, simply remove it.
That's everything I want to say for now. There's a lot more that can be said about game design, but I'm not going to get into a whole bunch of detail regarding it unless you specifically ask for help on one aspect of design. Actually, there's one more thing I want to say: game design is hard. Don't be overambitious. You don't want to spend years making a game only to find out that the basic gameplay mechanics and structure isn't all that fun (most people say FF13 falls under this category). Make a simple game, see if it works, and once people show their reactions, think about how you can improve it. Don't worry about having epic graphics and music, even though that contradicts what I said earlier about making everything fit the experience. If your experience requires photorealistic graphics and a full orchestra, that's fine, but you should probably do something else if you're a beginning designer.
And most of all, good luck.