Some general thoughts on this topic (not all of them original):
Graham Nelson noted many years ago that almost every room should have a puzzle in it, except for a few hallways or other navigation rooms that make the environment more realistic. I like to have a few rooms with two distinct puzzle elements – either a puzzle directly in the location, or one or two items you can pick up, or perhaps an in-game clue to something.
Some puzzles can be remotes – that is, you do something in location A that seems relatively pointless, but it activates or deactivates something in location B. The result is, you’ve solved a puzzle without knowing what you’ve solved.
At least one puzzle should have an alternate solution. At least one object that you pick up should be needed for two distinct puzzles. Possibly one thing that appears to be a puzzle is in fact insoluble and not important.
Some puzzles should be easy, and some should be hard. Puzzles should come in various types: finding something that’s hidden; retrieving something that’s out of reach; removing a barrier to navigation; convincing an NPC to give you something or do something you can’t do yourself; combining two objects to make a composite object that does something; starting (or stopping) a machine; paying close attention to your environment by examining things that seem unimportant; and so on.
Ultimately, every puzzle is a locked door to which you’re trying to find the key. Some doors will open to literally reveal new rooms, but every puzzle, when solved, changes the game state. You may have an object you didn’t have before, or some information you didn’t have before, or your sensorium may have expanded (as when you manage to find the light switch and turn on the light, for instance).
Sometimes it’s useful to plan backwards. Start by imagining the desired ending of the game and then work out what the player will need to get there. Without revealing any spoilers, “Prom Dress” is a good example of that. Only the wizard can solve the player’s problem, and there are six or eight things the wizard is going to need or conditions that will have to be met, so all of the puzzle vectors lead, eventually, to that final scene – including, at some point, meeting the wizard.