Here is my attempt to combine all of the answers given, and to interpret the SF Documentation provided on email limits.
A SINGLE_EMAIL_LIMIT_EXCEEDED exception is thrown when the daily Messaging.SingleEmailMessage limit is exceeded. This exception can be thrown in other cases as well, like when email deliverability is not set correctly.
Each SingleEmailMessage sent counts toward the limit, even if it is sent to the same email address.
A Dev Edition org has a single email limit of 15 messages. (assuming 1 recipient per email)
The single email limits don't take unique addresses into account. For
example, if you have email@example.com in your email 10 times, that
counts as 10 against the limit.
In Developer Edition organizations and organizations evaluating
Salesforce during a trial period, your organization can send single
emails to a maximum of 15 email addresses per day.
A non Dev org has a single email limit of 1000 messages. (assuming 1 recipient per email)
Using the API or Apex, you can send single emails to a maximum of
1,000 external email addresses per day based on Greenwich Mean Time
getLimitFutureCallstells you nothing of the organization's daily future call limit (250k or licenses * 200, whichever is greater). Instead, you will know how many more future calls you can execute before your transaction fails.