I have understood that both display the same valute (S&P 500) but in ^SPX there are more option's data (more expiries).
$\begingroup$
$\endgroup$
I remember there was no "^SPX" ticker on yahoo finance two three years ago (not very sure). So I guess "^GSPC" and "SPX" are the same, they just add "^SPX" to follow the most popular naming convention but still keep "^GSPC" for historical reason.