For writing applications you only really need to know about the RPC APIs and how to use them. Contributing to the core servers (Bitcoin Core, btcd, lnd, cln, etc) is probably not the kind of work you want straight off.
I am working on Indranet https://github.com/Indra-Labs/indra and we are mainly going to be talking to lnd and neutrino/btcd through their RPC APIs, it helps sometimes to know how they work inside but, for most purposes aside from building these core systems, it's all about writing code that communicates to the APIs. You can mix and match, there is Bitcoin and Lightning APIs that are independent (mostly) from implementations, so the main thing is getting to know the version created for the language you intend to work with, and it is helpful if you look towards the actual service involved and ensure you know its specific differences from other implementations.
lnd
andneutrino
/btcd
through their RPC APIs, it helps sometimes to know how they work inside but, for most purposes aside from building these core systems, it's all about writing code that communicates to the APIs. You can mix and match, there is Bitcoin and Lightning APIs that are independent (mostly) from implementations, so the main thing is getting to know the version created for the language you intend to work with, and it is helpful if you look towards the actual service involved and ensure you know its specific differences from other implementations.