Android - What does "Can't send message on card 1, error 21" mean?

Most likely the destination phone number is formatted wrong, which can happen particularly when importing contacts via third-party tool.

In this particular case, I used My Contacts Backup for iOS to export my contacts to VCF, then imported from Gmail. In the process, some numbers were wrongly formatted as +61 0 4xx when they should be just +61 4xx, causing the highly uninformative error message above. (The 21 error code actually comes from the operator's network, and has nothing to do with Android as such.) Removing the extra 0 solved the problem.