What is the difference between post hoc fallacy and non sequitur fallacy?
Saying something is a non-sequitur typically implies that a formal fallacy has been committed; that a deductive argument has been made which has an invalid form. The term can also be used more casually to refer to something which more generally just doesn't make sense (especially by way of the last part of a statement/assertion being unrelated to what came before it). But in any more technical capacity, the first sense would be preferred.
The post hoc fallacy is an informal fallacy; while it may represent faulty reasoning in some way, it does not actually constitute a formally, logically invalid argument. "Post hoc ergo propter hoc" assumes that because one event followed another, it must have been caused by it. This may or may not be the case; some things appear to be caused by some preceding event(s), but not everything which follows an event seems to be "caused" by it. Specious reasoning? Yes. Logically invalid? Not quite.
Tl;dr: non-sequitur = formal fallacy, post-hoc = informal fallacy.