1) Базовые принципы неплохо описаны
в доке
2) Все сильно зависит от размера проекта и команды. На маленьких объемах все не так уж важно
3) Много кода в одном файле это неудобно. Много мелких файлов тоже неудобно. Всегда нужно искать баланс.
4) Однозначно стоит выделять в отдельные компоненты все переиспользуемое. Стандартные кнопочки, инпуты, элементы интерфейса и пр.
5) Кстати, неплохая практика оборачивать все сторонние компоненты в свои. Так будет легче их модифицировать или вовсе заменить на самописные, когда припрет.
6) В мусорку все превратится, если не менять структуру и подходы по мере роста проекта. Разбирайтесь с проблемами по мере их поступления.