No necesita tener una comprensión íntima de todo el proyecto para poder mantenerlo. Por lo general, con un software grande y complejo, las personas tendrán sus propias "áreas" particulares que cuidarán y solo tendrán un conocimiento "pasajero" del resto del sistema.
SQLite es en realidad relativamente pequeño en la escala de "grandes proyectos de software", pero si observa algo como el sistema operativo Windows, tendrá personas que solo trabajan en el núcleo, personas que solo trabajan en el shell, personas que simplemente trabajan en Internet Explorer, las personas que solo trabajan en el administrador de Windows, etc. Alguien que trabaja en el "shell" no podrá corregir un error en el kernel en un abrir y cerrar de ojos.
También existe el beneficio de que estos proyectos evolucionan con el tiempo: no siempre comenzaron tan complicados. Eso significa que un desarrollador nuevo generalmente puede ser "entrenado" por desarrolladores más experimentados.
Cuando se une a un gran equipo de desarrolladores, se le dará un aspecto particular del proyecto en el que trabajar (tal vez un error o una nueva característica) y tendrá otro desarrollador que sea su "amigo" durante las primeras iteraciones. Tu amigo comprenderá bien el área en la que estás trabajando y puede ayudarte a orientarte.
Para proyectos de código abierto como SQLite, en realidad es un poco más difícil porque no hay motivación para que los desarrolladores existentes "capaciten" a los nuevos desarrolladores. Entonces descubrirás que estás solo un poco más. Pero aún puede encontrar ayuda en foros de desarrolladores o listas de correo (por ejemplo, simplemente publicando una pregunta como "Me gustaría implementar tal y tal característica" o "Encontré el error XYZ, ¿dónde empiezo a buscar?" Y es probable que obtenga alguna forma de ayuda