1) в паблик хтмл входной фронт скрипт index.php и папка с ресурсами, все. Остальное либо в папке protected либо на уровне выше.
2) Контроллер+ можно фильтры делать чтоб не копипастить код
3) Контроллер берет вход request, отдает в слой модели, модель отдает что-то, контроллер перерабатывает в нужный формат response и пихает в view.
4) Модели: сущность + слой логики лучше.
Зависит от паттерна (АР, Дата мапер и тд). Но разделять работу с БД и саму бизнес логику однозначно.