Должны ли разработчики понимать абсолютно весь проект?
В достаточно большом проекте - это просто невозможно. Ни один человек в мире не может понимать целиком, например, хром.

Если проект нормально структурирован, то все разработчики должны понимать примерно чем занимается каждая часть и общую архитектуру.

Но иметь белые пятна - это нормально, если непонятной частью занимаются другие разработчики, естественно. Свой кусок знать надо целиком.
В теории да. На практике есть менеджер, который распределяет задачи так, что можно вообще ничего не знать.