I can't imagine how (b) could be a "yes". Different callbacks are naturally used in different contexts. Sometimes it makes sense for a callback to return a value, other times it doesn't. And sometimes (like Catalyst), the framework is generic enough that the framework designer can't know in advance whether a return value is expected from a given callback or not.
All that aside, I lean towards "no" on (a) regardless. The entire concept of issuing a warning for calling a sub in the wrong context rubs me the wrong way on a rather deep level. I can't identify exactly why, but it's probably connected to the fact that "doing something that doesn't make sense to the module's author" does not necessarily imply "doing something wrong".