usually you two key are involved in any cipher. One for encrypting and the other for decrypting. The terms symmetric and and asymmetric apply to key spaces.
symmetric ciphers: The cipher key is as good as the decipher key. If you know one of them, you could derive the other. Sometimes they are even the same.
asymmetric ciphers: You can derive the public key from the private one, but not the other way around. That is the asymmetry. Which one is used for encryption or decryption depends on the scheme. Typically the public key corresponds to encryption key in the symmetric setting.
The terms public and private key, are only used in the asymmetric setting. So asymmetric schemes are sometimes called public key cryptography. But its not a good idea to refer symmetric schemes as private key crypto.
Regarding your second question, despite for educational purposes you should not implement your own crypto. Use well established libraries instead. For me C++/OpenSSL is a good combination. But that depends on your preferences and habits. Just use what you understand best. It is not possible to give a general advice.