Are there really any rules about when to use which ones, besides the difference in meanings?
Yes and no. Different prefixes have different origins.
Un- comes from Old English, while
in- comes from Latin. However,
un- is used with plenty of Latinate words, like
install. There is a pretty wide range of meaning, though, even though you can classify all those prefixes as negatives.
Really -- why is uninstall correct but deinstall is wrong?
The simple answer is that
uninstall is the form that's accepted as correct. One is in the dictionary, and the other is not. But regardless of
why it's incorrect, the fact is that it
is incorrect.