Shading / smoothing - how does it work with edges, faces, vertices?
If you have a cube and you set everything to render as smooth, then the faces of the cube will be shaded as though the object were a sphere. You can still clearly see that it's a cube since that's obvious from the geometry of the mesh, but the shading will try to behave as best it can as though the cube was actually smoothed say using the subdivision modifier.
Now take a cylinder. If you create a standard cylinder then you can clearly see that it's not perfecly round, that the sides are made of 32 faces. In order to make this appear perfectly round you could increase the resolution of your mesh, which would lead to worse performance and longer render times, or you could just change the shading to smooth. Now if you change the shading to smooth for the whole cylinder then the shading will again try to make the cylinder look as though everything was smoothed, that's good for the sides, but it's not what you want for the caps, since you still want the cylinder to clearly be seen as such. That's when you'd need to go and change the shading of individual faces of your mesh in order to maximise the appearence. Go to edit mode, select only the top and bottom faces (the caps) and mark them as flat. Exit edit mode and you'll see the cylinder displayed perfectly, smooth on the sides, but flat on the caps.