Glad you enjoyed it!
When designing a level, first I decide what mechanics I want and how complex and difficult I want it to be. Then I try to place blocks in an interesting pattern, or a way that is mechanically simple, or in ways I haven't done before but want to explore. I try to make levels as small as I can to better control the possibility space, and expand only if needed or makes sense. After that is lots of iteration of play testing and level editing, making sure it is possible yet difficult, has an interesting twist, or introduces a concept well. Finally, I reevaluate how difficult it is and decide what order it should be in.
Some levels and even some entire mechanics just don't work and need to be scrapped, so don't be afraid to do that if the game needs it. Getting feedback from other playtesters is important too!