Two neutrons are unstable due to the binding energy not being sufficient to prevent the natural decay of a neutron (n -> p + w-, w- -> e- + ve). If you have a nucleus consisting of about 10^50 or so neutrons, it is stable (aka a neutron star), gravity provides the needed binding energy.
Two protons can be bonded together, the problem is that the energy stored in the electromagnetic force from doing so is sufficient to "spawn" a positron and an electron neutrino, which allows the following reaction to occur: p -> n + w+, w+ -> e+ + ve (there should be a bar over that last ve, but no idea how to do that with this text editor)
This results in the di-proton rapidly decaying into deuterium.
Antimatter/matter annihilation occurs as the net spin/charge/colour(QCD "charge")/etc is zero when a particle meets its anti-particle. This allows for the system to turn into any system with the same net number of the above quantities, where the most stable thing to turn into would be photons (two photons needed). This results in all of the energy of the pair of particles being converted into photons going on opposite directions.