What am I doing wrong with my math?
The problem here is that / operator in integer division truncates the result, check  Mathematical Functions and Operators

Try with:

SELECT *,(fatalities::float/population)*100000 AS rate FROM all_states;


Or

SELECT *,(fatalities::numeric/population)*100000 AS rate FROM all_states;