Есть несколько способов, главное помнить что классы не ради классов, а для поддерживаемого кода и его повторного использования.
1. Автозагрузка классов с помощью Composer (многие используют).
2. Написать свою автозагрузку. (если у вас что то сильно не стандартное)
3. В виде модуля bitrix, автозагрузка будет (имхо самый правильный вариант для битрикса)
При использовании composer, файлы классов могут лежать, где угодно, но хорошей практикой считается хранить их (как и папку vendor) на уровень выше публичной папки.
В Namespace вы не ограничены, главное делайте явную и четкую структуру и названия несущие смысловую нагрузку.
ЗЫ: Не забываем про DRY, KISS, SOLID и т.д.