Hello arocon;
Gambrinus is right, OBs allow a programmer to program code but do not require it.
An OB is not called by the user, like a FB or FC block. It is called by the CPU, to react to an event detected by the CPU; each OB reacts to a different event. If you use a Time_of_day interrupt OB (for example OB10), your code will be executed at the time that you have set for OB10 to be active (in the CPU properties, in HWConfig). The CPU will ensure that the OB is called, not you; when it is called whatever code you have programmed will be executed.
Now, OBs in the range of 8x or 12x are error OBs; they are called by the CPU when it detects certain error conditions; if there is any user code programmed in them, it is executed as soon as the OB is called; if there is no code, there is nothing the user needs to be done; but that does not mean that the OBs are not useful. They capture the date and time of the event, and provide information for the PLC internal diagnostics (available to the user in the Diagnostics buffer). One important thing: normally the CPU will stop when it detects an important error in its process (wrong memory access, or missing I/Os, communication error, programming error...); when the correct OB is loaded in memory, even with no code programmed, it allows the CPU to continue operating even with a fault still present (the SF LED will shine red, but the PLC will continue working). So you can diagnose and repair the error (if possible) while the CPU is running.
You will find a lot of information on OBs in the System and standard Functions manual; it is installed in the Simatic/Documentation folder on your PC, along with Step 7.
Hope this helps,
Daniel Chartier