user7732: I would like to control a DC motor's speed using the PWM output from my motherboard header.
Here's the standard pinout for a 4-wire PC fan header:
╔═══╦════════╦═════════════════╦════════╗
║ # ║  Name  ║   Description   ║  Wire  ║
╠═══╬════════╬═════════════════╬════════╣
║ 1 ║ GND    ║ Ground          ║ black  ║
║ 2 ║ +12V   ║ Fan Power       ║ yellow ║
║ 3 ║ SIGNAL ║ Fan RPM         ║ green  ║
║ 4 ║ PWM    ║ Digital Control ║ blue   ║
╚═══╩════════╩═════════════════╩════════╝

Since my DC motor doesn't have a PWM input, I thought of using an ATmega328P in my custom board to read the PWM output of the fan header -- pin 4 -- so that I can use a motor driver to control my motor's speed.
However, I'm not sure how I should read the PWM signal from the motherboard.

What is the HIGH voltage level of PWM output?
Do I need a voltage divider resistor for it?
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.
Should I use pulseIn() function for the 25kHZ (21~28kHZ range) PWM output?
Can the ATmega328p handle this frequency range?

I prefer to use Arduino's bootloader with the wiring library, but if you have AVR-specific examples that I could follow, I'd appreciate it.

user20533: 
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!

7732: <p>I would like to control a DC motor's speed using the PWM output from my motherboard header.</p>

<p>Here's the standard pinout for a 4-wire PC fan header:</p>

<pre><code>╔═══╦════════╦═════════════════╦════════╗
║ # ║  Name  ║   Description   ║  Wire  ║
╠═══╬════════╬═════════════════╬════════╣
║ 1 ║ GND    ║ Ground          ║ black  ║
║ 2 ║ +12V   ║ Fan Power       ║ yellow ║
║ 3 ║ SIGNAL ║ Fan RPM         ║ green  ║
║ 4 ║ PWM    ║ Digital Control ║ blue   ║
╚═══╩════════╩═════════════════╩════════╝
</code></pre>

<p>Since my DC motor doesn't have a PWM input, I thought of using an <code>ATmega328P</code> in my custom board to read the PWM output of the fan header -- pin 4 -- so that I can use a motor driver to control my motor's speed.</p>

<p>However, I'm not sure how I should read the PWM signal from the motherboard.</p>

<ol>
<li><p>What is the <code>HIGH</code> voltage level of PWM output?<br>
Do I need a voltage divider resistor for it?</p>

<p>A source for the fan control specifies this to be <strong>5.25V</strong> 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.</p></li>
<li><p>Should I use <a href="https://www.arduino.cc/en/Reference.PulseIn" rel="nofollow noreferrer"><code>pulseIn()</code></a> function for the 25kHZ (21~28kHZ range) PWM output?<br>
Can the ATmega328p handle this frequency range?</p></li>
</ol>

<p>I prefer to use Arduino's bootloader with the wiring library, but if you have AVR-specific examples that I could follow, I'd appreciate it.</p>
 20533: <blockquote>
  <p>Should I use pulseIn() function for the 25kHZ (21~28kHZ range) PWM output?
  Can the ATmega328p handle this frequency range?</p>
</blockquote>

<p>No, and No; 1/25000 = .000040 or 40 microseconds (μS) and the <a href="https://www.arduino.cc/reference/en/language/functions/advanced-io/pulsein/" rel="nofollow noreferrer">documentation</a> for pulseIn() says:</p>

<blockquote>
  <p>Works on pulses from 10 microseconds to 3 minutes in length</p>
</blockquote>

<p>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%</p>

<p>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. </p>

<p>However since you want to </p>

<blockquote>
  <p>... control a DC motor's speed using the PWM output from my motherboard header</p>
</blockquote>

<p>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!</p>

<blockquote>
  <p>... so that I can use a motor driver to control my motor's speed.</p>
</blockquote>

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

<blockquote>
  <p>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.</p>
</blockquote>

<p>Trust your documentation or test it if you don't trust the docs!</p>
