What is checked
Row width against the header. A row with more fields than the header usually means an unquoted delimiter inside a value; a row with fewer usually means a truncated line.
Header names. Blank headers and duplicate headers both cause silent data loss downstream, because most tools key columns by name.
Type consistency per column. A column that is numeric in 998 rows and text in two is worth looking at, and the two are usually where the export went wrong.
Replacement characters. A U+FFFD in the text means the file was decoded with the wrong encoding and those characters are already lost.
There is no CSV schema
CSV has no way to declare what a valid file looks like, so validation is a set of heuristics rather than a check against a specification. Everything reported here is something that is usually a mistake, not something that is definitionally illegal.