You are confusing threads and cores. You typically have around 8 cores, and each one can run just one thread at single time. If an application spawns several threads, these are either waiting on something (such as user input), or want to run (e.g. render something). All runnable threads in the whole system - from all applications - compete for the fixed number of cores to run on. There are hundreds or thousands of threads, but most of them are waiting most of the time. If there are more threads that want to run than number of cores, then the threads take turns in running - 8 run at the same time, others wait and replace them after few milliseconds (200 by default in windows)
Setting number of threads to 1 makes Corona do heavy lifting (= rendering calculation) in just one thread. The operating system is free to schedule this one thread to run on any CPU core, and it usually periodically moves the thread around all available cores. You dont want to have only one CPU core to run all singlethreaded applications, as it could cause problems with for example overheating one part of the CPU die.
You can artificially limit which CPU core can each thread run on, but trust me, you dont want to do it - operating system does much better job at scheduling than you could do. If you limit Corona to just one specific core, and that core is not available, then it will have to wait, and you will lose performance