From the Concepts Guide ...

"The DBWn process writes dirty buffers to disk under the following conditions:
* When a server process cannot find a clean reusable buffer after scanning a threshold number of buffers, it signals DBWn to write. DBWn writes dirty buffers to disk asynchronously while performing other processing.
* DBWn periodically writes buffers to advance the checkpoint,which is the position in the redo thread (log) from which instance recovery begins. This log position is determined by the oldest dirty buffer in the buffer cache."

... and ...

"Checkpoint (CKPT) At specific times, all modified database buffers in the SGA are written to the datafiles by DBWn. This event is called a checkpoint. The checkpoint process is responsible for signaling DBWn at checkpoints and updating all the datafiles and control files of the database to indicate the most recent checkpoint."

Anyhow, I think that both explanations you quote are true - I see no contradiction in them, they are just looking at the process from different angles.

If you take a checkpoint, all the dirty buffers must be written to disk -- if you write all dirty bufers to disk, you can take a checkpoint.