To elaborate a little bit more, when you generate requests faster than your server responds, your 'running' count starts going up til it reaches its limit (setting in loadui). Once that happens all subsequently generated request starts getting lined up in 'queued'. That means LoadUI is waiting for running count to go below the limit to send these requests to your server. If this 'queued' count also reaches its limit (another loadui setting), then any subsequently generated request starts getting discarded. Means they will never get sent to your server.
Failed means request was sent, but an invalid/unexpected response was received. For SoapUI Runner, it may be an assertion fail, or a test step fail. For Web runner it may be an invalid HTTP response, etc.
So to compare 'discarded' and 'failed', former means request never sent to server as it's being generated too fast to go over limit set in loadui setting, while the later means the request was indeed sent to the server (assuming no prior test step execution failed), but an invalid/unexpected response was received.