If you feed the API the uselang parameter (for a module other than watch or parse), the API reports invalid parameter. However, MW (before the API comes to play) uses that to set global state of $wgLang (or the fake global state of all those Context variables).
The warning should be less "Unrecognized parameter: 'uselang'" and more like "uselang parameter not explicitly allowed for this module, but may nonetheless have side effects. It is recommended one does not use that parameter".
I still feel we should have some sort of warning, because users should not be using it unless its specifically listed as allowed.
See also gerrit change 34595 for some discussion
Version: unspecified
Severity: normal