BAD_FILE = is the records (upto the rejection limit) that are rejected during the load. i.e. they format of the record isn't matched by the format in the control file.
DISCARD_FILE = is the records that did not satisfy the selection cirteria in the control file. Meaning the record is in violation off a condition specified in the control file as opposed to being illformed