Not "one" but all the background processes can / do write to it.
The archiver writes to it. LogWriter can write (if you have log_checkpoints_to_alert).
When a background process detects that another has died, the former writes to the alert log before panicking the instance and killing it.
Similarly an ALTER SYSTEM command issued by the server process for your database session will also write to the alert.log
(You can also invoke a specific database procedure to write to it -- but this is not documented).
Trace files for user processes are normally in the user_dump. They are created only when tracing is requested OR when Oracle encounters an error.
The alert.log is a file that is used to continously display the status of the database as it changes with important events (e.g. archival of log, alter system commands, ora-1555 errors, indexes unusable, datafile space allocation etc). Most of these are issues which affect the entire instance/database. However, where a sever error is encountered in a user process, Oracle writes a trace file in user_dump_dest for that error and a message indicating the error and the name of the trace file to the alert.log.
Similarly, the background processes may also be writing to their own trace files to indcate status /tracing.
The level of detail being logged can vary by version and by setting specific database events (if specified by Oracle Support) in the instance.