We've already seen a few blocks in the previous chapters. In case you forgot: A block is basically an element you can place in an area. Thanks to the really extensible architecture of concrete5, it's quite easy to create a new block and add new functionality to your website.
Blocks are just like anything in concrete5 built using the Model-View-Controller (MVC) pattern. This makes sure that every element in concrete5 follows the same structure. A developer who builds extensions for concrete5 should have experience with object oriented programming and the MVC pattern.
Understanding the MVC pattern isn't very difficult but helps pretty much any developer. It basically makes sure that the layout (view) is in a file, split apart from the logic (controller) and the data (model). You can find more information about the pattern on Wikipedia: http://en.wikipedia.org/wiki/Model_View_Controller.