С включениями вы включили бы весь шаблон дословно. Этот шаблон будет иметь доступ к любым переменным шаблона, которые в настоящее время находятся в области видимости.
С помощью макросов вы определяете тип функции внутри Twig (не путать с функцией Twig, которая может обращаться к другой логике приложения, а не только к данным, передаваемым в шаблоны), которые могут отображать определенный компонент с соответствующими объектами. Таким образом, у вас может быть макрос для рендеринга, скажем, списка покупок, который принимает список покупок в качестве параметра - и вы можете затем повторно использовать этот макрос, не беспокоясь о том, передали ли вы данные в шаблон таким же образом в другом месте. Переменные, явно не переданные в макрос, не будут находиться в пределах этого макроса.
Макрос должен действительно выполнить одну конкретную задачу, чтобы получить некоторые данные и визуализировать повторно используемый компонент. Включение может включать в себя любой кусок вещей - это гораздо больше зависит от вас. Расширяемая природа работы шаблонов Twig, в отличие от чего-то вроде Smarty, означает, что вы, скорее всего, будете использовать меньше по своему замыслу, но все же могут быть случаи использования, когда это будет самый простой способ избежать дублирования в ваших шаблонах. .