How to read a 25 kHZ PWM signal from PC fan header?
Should I use pulseIn() function for the 25kHZ (21~28kHZ range) PWM output?
  Can the ATmega328p handle this frequency range?


No, and No; 1/25000 = .000040 or 40 microseconds (μS) and the documentation for pulseIn() says:


  Works on pulses from 10 microseconds to 3 minutes in length


However the PWM frequency is the maximum on time, at 50% you will have a square wave that is HIGH for 20 μS and low for 20 μS. pulseIn will not work if the PWM duty cycle goes below 25%

What you want to do is put an 'accumulator' (an RC filter) between the PWM output and an analog input pin, and read the voltage off of that. 

However since you want to 


  ... control a DC motor's speed using the PWM output from my motherboard header


and the fanspeed header is already designed to do this, you just use the PWM signal to drive a transistor that drives the motor, the motor itself will act as an accumulator here; no micro controller needed!


  ... so that I can use a motor driver to control my motor's speed.


you will need to generate an extremely similar, almost certainly identical, PWM signal to drive your motor controller/driver


  A source for the fan control specifies this to be 5.25V at maximum, but since I haven't tested it out myself, I don't want to risk feeding a 12V signal to my microcontroller's input lines.


Trust your documentation or test it if you don't trust the docs!