2017-06-04 0:47 GMT-03:00 Jean Menezes da Rocha <jean@menezesdarocha.info>:
I managed to install SuperCollider and run your example of Phase Modulation. I could achieve the exact same sound with the following ChucK code:

SinOsc mod => SinOsc car => dac;

400 => car.freq;
201 => mod.freq;
mod.freq() * Math.PI => float ind => mod.gain; // this bugger works with much greater values as standard gain...
2 => car.sync; // FM instead of syncing to phase. don't know why...

while ( true ) {
    1::second => now;
}

It might sound the same, or similar, but this is still frequency modulation and not phase modulation. 
 
The weird thing is that I had to use 2 (FM) as a value for .sync, contrary to my intuition of syncing to phase.

Again, not weird, just a fact that Frequency and Phase modulation are related 
 
Another oddity is the way to calculate the modulation index, which I admit was a wild guess that turned out to be correct. I am also curious if anyone can explain this.

It's not easy to explain, but you found the magic number/formula that makes Frequency modulation sound like Phase Modulation. 
 
However, I am now the one struggling to figure out the difference between this phase modulation and FM

In short, they behave differently with the same parameters, but the parameters can be "converted"/"adjusted" to sound the same.
 
syncing to phase, as was my first intuition, yields a rather different sound (much harsher) and does not respond to changes to the carrier's frequency.

Yep, as I noted, and it is not actually doing phase modulation
 
Hence, a working phase modulation code still remains mysterious to me.

It seems that when you have a phase input to SinOsc, it'll only consider that input and disregard any frequency input, is that possible?

Perhaps you can just feed a phase input to SinOsc and then modulate that signal. Like, send it a phasor input and modulate it. That's gotta work.

cheers