In order to send and receive iMessages, both the sender and the recipient need to be signed into iMessage and have an active data connection (either WiFi or cellular). You can turn on Settings>Messages>Send as SMS so that, should your recipient not have a data connection and the message doesn't go through, it will be resent as an SMS.
iMessage can get a bit flakey if one party only had an intermittent data connection. If that's the case, I'd recommend them just turning it off and using SMS. Less frustrating all around.