See kernel/sched/loadavg.c which has a long and excellent comment at the start explaining the derivation of load average from a exponentially decaying average of the number of runnable threads (the "run queue") plus the number of uninterruptable threads (waiting on I/O or waiting on a lock).
Here's the essence of the comment, but it is worthwhile reading in full:
* The global load average is an exponentially decaying average of
* nr_running + nr_uninterruptible.
*
* Once every LOAD_FREQ:
* nr_active = 0;
* for_each_possible_cpu(cpu)
* nr_active += cpu_of(cpu)->nr_running +
* cpu_of(cpu)->nr_uninterruptible;
* avenrun[n] = avenrun[0] *
* exp_n + nr_active *
* (1 - exp_n)
Real life makes the code somewhat complex: per-CPU counters, tickless kernels, hotswap CPUs, lack of floaing point code requiring a fixed-point implementation of exp(n). But it's easy to see that these are all working towards faithfully implementing the method described in the comment.
You'll note that Linux counts threads, not just processes, which answers your question.