Does changing PWM frequency in arduino affects SPI and I2C communication and helps controlling DC motor?
1) 31KHz is a much more reasonable PWM frequency than 500Hz.  Motors will act like a low-pass-filter and generally give you the DC equivalent of your PWM but with very low frequency PWM that gets dicey - as you've seen.  In general, you should increase the frequency of the PWM above the bandwidth of the motor - otherwise it sees a square wave rather than a DC voltage. 31KHz is right in the range of most motor controllers I've seen.  You generally want it high but not too high (HF noise may couple into other parts of the circuit, etc.). It looks like you're in a good range with 31KHz.

2) It shouldn't affect those bit rates.  The peripherals ought to have their own dividers and scalers and should be driven off of the main clock and not a peripheral timer.  I can't speak to the pulseIn function though.