If you are specifically talking about something in the past, your best bet is option one or three. They're both correct for your usage and they both mean the same thing. The preposition "on" is discretionary - you can use it or not.
In your exact sentence, I recommend omitting "on".
The abandoned building caught fire many years ago.
You do not want to use version two. It sounds a bit odd to me as a native speaker. There are probably cases where it would be acceptable but it doesn't feel natural.
Version four is perfectly fine but not in your example case. The "has" implies that the building is currently in flames and it happened recently... which, since you're talking about something that occurred many years ago, would be incorrect.
Note that it may be helpful to continue your sentence to explain what the end result was.
The abandoned building caught fire many years ago but was rescued by the local fire department.
The abandoned building caught fire many years ago and burned to the ground.