The main idea behind modelling using subdivision surfaces is to create simple geometry that after applying a smoothing algorithm like Catmull-Clark or Loop it finally gets its smoothed and final shape. This way you model the low resolution mesh and you get the higher resolution meshes applying different levels of this smoothing modifiers.
The main problem is that this smoothing algorithms will smooth at all cost and you sometime want to keep several edges chamfered but hard. One way to do this is creating bound edges around the edges you want to be hard.
I'm using 3dsmax as the modeling software and to start playing with this I found the exercise of keeping a box like a box after applying a TurboSmooth a great way of understanding the behavior of the smoothing algorithms
Another a bit more complex example. This time we will create a smoothed gear. Here I show you one strategy
Thanks to Ramón