Macro and expression blocks are special blocks that can contain routines. This is used in order to simplify routine building and keeping a tidy look.
The main difference is that the Macro Blocks can function as a pipe in a logic flow, whereas the expression blocks function as a result themselves, and therefore a stop in a logic flow.
This can be easily observed as the expression blocks do not contain logic gates.
These can be edited by clicking their name in the sidepanel. A new workspace will be launched contained in the macro or expression which can be edited like any other routine. The blocks also have further customization options.