Собственно, в чём принципиальная разница между CSS свойствами margin и padding? Тема довольно простая. Свойство margin это внешний отступ, а padding — внутренний, но это ещё не всё.
Соприкосновение типографических блоков
Для типографических блочных тегов (h1, p, q, etc) принципиально использовать именно свойство margin т.к. оно нивелируется при соприкосновении блоков, i.e. будет использоваться margin только одного (первого) тега. С padding же такого поведения нет.
Отрицательное значение
Для padding нельзя задать отрицательное значение, а для margin можно.
Эпилог
Как видно, у padding функционал значительно урезан в сравнении с margin. Вообще всегда лучше сперва использовать именно margin, а уже потом padding, если есть такая потребность. В каком-то смысле внешний отступ margin можно назвать первичным, а внутренний padding — вспомогательным.