2.1. Body не нужно указывать никаких padding'ов и margin'ов. Для header пропишите padding-top: 15px.
2.2. Сложно сказать.
2.3. Для footer пропишите padding-top: 15px.
P.S. Вообще сложно ответить на вопрос и что-то посоветовать не видя макет. Для разных случаев прописывается код по-разному.
Float изначально предназначался для обтекания блока текстом, а находчивые разработчики запрягли его делать расстановку блоков. Но с приходом flex'ов все встало на свои места, float'ы для работы с обтеканием, flex'ы для создания гибких макетов.