Интерфейс определяет какой функционал должен будет быть у имплементирующего его класса. Его в некотором роде можно сравнить с содержанием книги. Например, вы смотрите в содержании, что на странице 69 начинается глава 8 Рыбы, вы можете быть уверены, если вы откроете книгу на 69-й странице, вы увидите означенную главу. Отличие от реального содержания в том, что содержание лежит отдельным листиком и подходит некоторому количеству книг, которые обязуются ему следовать.
Трейты - расширение функционала. Если у вас есть несколько различных классов, в которых есть одинаковая логика, то её можно вынести в трейт, в классах подключать этот трейт и получать на выходе те же самые классы, но без повторяющегося кода.
Как-то так...
PS Сомневаюсь, что куча кода и скрины без пояснений, что и где смотреть и как вы хотите к каждому, ускорят получение вами нужного вам ответа.