There is no way that a modern encryption library operates on characters. All modern ciphers are defined to operate on bytes (some are defined to operate on bits, but most libraries will assume a byte is the minimum unit of data). If your library accepts character strings then they will be converted to bytes within. Note that e.g. std:string
does not have to contain character strings, it can contain byte strings (a.k.a. octet strings) as well.
On the other hand most encryption libraries use the full range of the key space. This means that the bytes that make up the key can have any value. So as long as your base 64 encoded key has a valid key size it may be accepted. In that case the only problem is that base64 will contain 3/4th of the entropy of a fully random key. So if you have a 192 bit AES key it will be converted to an AES 256 bit key. In that case you should not claim 256 bit security, as the amount of possible keys in your scheme is still 2^192.
If the encryption library itself decodes the base64 then your key is first converted 1:1 to base64 and then back to the original key again. Obviously in such a case base64 does not make a difference. You would expect that conversion from base64 or hexadecimals is well documented for the library.
There seems to be precious little information available for Synercoding.Encryption - that's not a good sign.
If the key is not a key but a password fed into PBKDF2 then you just need to provide it enough entropy. If that is directly fed into PBKDF2 or if it is first encoded as base64 makes no difference.
Funny enough for a password based function PBKDF2 is also defined to operate on bytes. The API should therefore also specify the character encoding. Usually it is compatible with ASCII though, so base 64 is likely to work. It can even be used as some kind of compatibility layer between implementations of PBKDF2.