Yes, when using the addmultisigaddress or createmultisig APIs to create a multisignature address, you can pass a list of public keys, whose private keys are not necessarily in the wallet. A public key is different from an address (which is a hashed version of a public key). You can obtain the public key for an address in a wallet using the validateaddress API, or getaddresses or listaddresses with verbose=true.