For input you can use a voltage divider to get a 5V signal and use pulseIn() to measure pulse width directly. Using a filter to get an analog signal and measuring the analog signal is likely to be less accurate.
Do not use op-amp. Use NPN transistor and pull-up resistor to 10v supply.
Using an R-C filter an analog input, you can get 10-bit resolution, but at the expense of response time. How fast do you need the system to respond to changes in the PWM? This mechanism is potentially sensitive to the voltage of the PWM input, but you can avoid that by passing it through a logic gate prior to the R-C filter.
If you need 8-bit resolution (the default Arduino PWM output resolution), then a filter comprising a 10K series resistor and a 47nF capacitor to ground will give you a low enough ripple voltage, and only delay the response by about a millsecond.
Now the question for the project are how can I get 5V PWM signal from 10V PWM before it pass through the RC filter? how can I level up the new PWM signal from 0-5V to 0-10V? ( Still not fixed)If possible, I prefer to get both of the circuit diagram/ suggestion.
How can I ensure to generate 10V PWM signal to MOSFET without distortion?