Some thoughts about making puzzles
The puzzle should have very simple moves. Preferably just one or two types of moves, such as "select" or "drag". No keyboard combinations.
The result of a move should be immediately obvious. The change should look natural. This way, the brain will accept the nature of the puzzle as reality.
The graphics must be smooth and bug-free. Otherwise, immersion is ruined.
Use color to communicate status. Do not use symbols such as letters or numbers. Use few colors, that are easy to tell apart (and remember that about 4% of people have some colorblindness).
No move should be irreversible. Irreversible moves discourage playing around. Playing around is important for internalizing the dynamics.
The puzzle should always be solvable. Knowing that the puzzle is solvable encourages the player to continue when a puzzle is hard.
A simple trick for guaranteeing solvability is to make each level a "scramble" of some ground state. The player's job is then to find the "unscramble". If all moves are reversible, then solvability is guaranteed.
Winning should be indicated, as a reward for the player's efforts.