In Flask templates, macros let you create reusable HTML parts. First, you define a macro with parameters. Then you call it with specific values. When rendering, the macro call is replaced by the HTML it generates using those values. This helps avoid repeating code and keeps templates clean. For example, a button macro can be defined once and used many times with different text and links. The execution table shows defining the macro, calling it with parameters, and rendering the final HTML. Variables like 'text' and 'url' hold the values passed to the macro. Remember, macros must be defined before use, and their output replaces the call in the final page.