Então Adrian, realmente o using é apenas para o compilador entender/localizar onde está aquela dependência/dll. Se você abrir o .csprojvocê vai encontrar uma serie de instruções que o compilador faz antes de realizar a compilação em si ( gerar a DLL ou o .EXE ) na pasta bin. E quando você faz essa importação através do Visual Studio, ele cria essa "instrução" no seu .csproj linkando as sua dll/projeto/class library/ ou qualquer outro arquivo que você necessite em execução no seu programa.
Quanto a segunda parte da sua pergunta, nunca vi o uso de DLLs em C# para Python ou C++, geralmente o caminho é ao contrário, de Python, C++ e Java para C#. Mas enfim falando especificamente de importação, pelo menos 2 coisas precisam sempre estar em seu código a referência ao namespace usando o using ou import ( dependendo da linguagem que fará a importação ) e que a DLL esteja dentro da pasta de saída da compilação ou dentro da pasta do projeto.
Tive a oportunidade de ver projetos usando C# interagindo com bibliotecas em linguagem C, era exatamente desse jeito: Ou colocavam o arquivo .c compilado da biblioteca dentro da pasta bin/Debug ou bin/Release manualmente. Ou configuravam o Visual Studio para ler uma determinada pasta com com os arquivo da biblioteca em liguagem C compilados e pediam para que o próprio incluisse esse arquivos na pasta de saída quando fosse compilar o projeto.
Tem um curso aqui mesmo que explica bem melhor essa parte de compilação do .NET/C# que pode ajudar a entender mais ou menos o que eu quiz explicar a respeito dos links que o Visual Studio faz para referenciar em tempo de execução no seu projeto outras bibliotecas: https://cursos.alura.com.br/course/msbuild-dotnet-cli.
Espero ter ajudado!