Você não precisa ter uma compreensão íntima de todo o projeto para poder mantê-lo. Geralmente, com softwares grandes e complexos, as pessoas têm suas "áreas" particulares que cuidam e só têm um conhecimento "passageiro" do restante do sistema.
O SQLite é relativamente pequeno na escala de "grandes projetos de software", mas se você olhar algo como o sistema operacional Windows, terá pessoas que apenas trabalham no kernel, pessoas que apenas trabalham no shell, pessoas que apenas trabalham no Internet Explorer, pessoas que simplesmente trabalham no gerenciador de janelas, etc. Alguém que trabalha no "shell" não conseguirá consertar um bug no kernel com um simples toque.
Há também o benefício de que esses projetos evoluem ao longo do tempo: eles nem sempre começam tão complicados. Isso significa que um novo desenvolvedor geralmente pode ser "treinado" por desenvolvedores mais experientes.
Quando você ingressa em uma grande equipe de desenvolvedores, recebe um aspecto específico do projeto para trabalhar (talvez um bug ou um novo recurso) e solicita que outro desenvolvedor seja seu "amigo" nas primeiras iterações. Seu amigo terá um bom entendimento da área em que está trabalhando e pode ajudá-lo a encontrar o caminho.
Para projetos de código aberto como SQLite, na verdade é um pouco mais difícil, porque não há motivação para os desenvolvedores existentes "treinarem" novos desenvolvedores. Então, você descobrirá que está sozinho um pouco mais. Mas você ainda pode encontrar ajuda em fóruns de desenvolvedores ou listas de discussão (por exemplo, apenas postando uma pergunta como "Gostaria de implementar esse recurso", ou "Encontrei o bug XYZ, por onde começo a procurar?" E é provável que você obtenha alguma forma de ajuda.