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 add-ons 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.