Theoretically, could there be different types of protons and electrons?
Your friend is correct: there's only one type of proton.
The proton is the lightest baryon. It has charge $+1$, spin $1/2$, and baryon number $+1$.
These three quantum numbers are so fundamental that if you try to change any of them, the result won't be a proton. For example, if you change the charge to $0$, you get the neutron, and if you change the spin to $3/2$, you get the $\Delta^+$ baryon. If you change the baryon number to $-1$ (and also change the spin to $3/2$), you can get an anti-$\Delta^-$ baryon.
We could call all of these particles excited states of the proton, but this wouldn't be useful, because they behave so differently: the different quantum numbers drastically change what processes they can participate in. For example, the $\Delta^+$ can decay to pions and nucleons, and the anti-$\Delta^-$ can annihilate with normal matter, and so on.
Perhaps the most important feature is that the proton is stable, because there's nothing lighter for it to decay to. This is an extremely important property (it's why protons are in nuclei instead of, say, $\Delta$ baryons), and none of the other baryons above share it, so it makes sense to let "proton" denote the unique lightest, stable baryon.
The case of the electron is easier. It's a fundamental particle, so it can't have any excited states by definition. The closest thing to the electron is a muon, but that particle is so different that it's in no sense a 'different type of electron', as I show here.
It is an experimental fact that all electrons and also all protons (but this often applies also to nuclei, atoms and even molecules) are indistinguishable from one another, i.e. they both are identical particles.
Imagine to perform the following experiment: you take two objects A and B, perform as many measurements as you want on them, put them into a "black box", shake the box and then take them out. At this point, you want to be able to tell which object is A and which is B.
Let's say that A and B are two...apples. You can then measure their mass, their volume, take photographs of them etc.: you will obtain different results (taking into account experimental errors). Therefore, the only thing you have to do is take note of these results and you will be able to tell which is A and which is B.
However, if you try to do the same thing with two electrons, you will discover that all the quantities you can measure (mass,charge,spin etc.) are identical within experimental error. Therefore, you will not be able to tell one electron from the other.
This is an experimental fact, and as far as I know there is not a theoretical reason why it should be so. Maybe one day we will be able to perform more precise measurements and we will discover that electron charges are actually slightly different from each other!
PS I would like to stress that it is pointless to say that protons are identical because they are made of identical quarks, because this only shifts the problem from proton to quarks (we could then ask "why are all quarks identical?").
The key to the answer is observation. We have already observed a lot of small and huge things interacting with each other.
Unscientific answer would be: there could be a multitude of subtypes of a proton, but we simply haven't invented yet the experiments which show those subtle differences.
Scientific answer is NO. Per Occam's razor, if we found a particle that interacts the same way, always and in every experiment, then we are safe to simply call it a proton. That's it. Period. The Scientific Method is to always use the simplest theory. If you are using a more complicated theory, personally I call it "unscientific method". It doesn't mean you're necessarily wrong; but surely your theory lacks elegance. The classical argument is Carl Sagan's story "The Dragon In My Garage".