Is it okay to send an encrypted key using XSalsa20-Poly1305, and send subsequent messages using ChaCha20-Poly1305?
Yes, this is secure.

Even simpler would be to just use XSalsa20-Poly1305 and the long term key directly. You could authenticate any additional data with the Poly1305 just as well as in the case of the ChaCha-based combination. However, if you use e.g. libsodium where the former interface does not support additional data and the latter has a short nonce, then combining them like you suggest is OK as well.

Note, regarding your comment: there is no need to authenticate the message length separately. The whole message is already authenticated by default so you can just calculate its length.

If the only additional data you need to authenticate is a sequence number, you could include it as part of the 192-bit nonce and use XSalsa20-Poly1305 only. 128-bit random part and 64-bit sequence number would be fine, and 160/32 would be even better.