Translated from the W3C , it's from the html4 documentation but still It is valid:
Buttons created with the BUTTON feature function the same as buttons created with the INPUT element, but offer richer rendering possibilities
Responding to your questions:
Is there a difference between them?
Yes, its purpose is the same to launch an action, we could even include the <a></a>
between them as well. Its main difference goes more by the styles. the form and the purpose.
-
input : Allows you to create a simple button that can only include text in its attribute
value
and is what is shown on the button.
-
button : It allows to create a button but with html inside, that is you can include icons, images, etc.
-
to : It allows to include html inside, icons and images, as if it were a button but by definition the links should take you to another side (it can be content brought by ajax) while the buttons must perform a task .
Will there be cases in which it is recommended to use one or the other?
Yes, as I mentioned in the differences, basically for aesthetic reasons.
Does something happen if combined are used in the same form?
No, you can use them interchangeably, even without a form. Both can be used outside the form without problems.
Could there be compatibility problems?
No, there would be no problem, both are part of the html standard and they are just like two different elements, that is, if the other html rules should be respected as they should not repeat the id.