Programs tend to use one core. Well, unless the program is designed to use software design techniques such as multi-threaded parallelization. Since some programs do use such a technique, some programs may offload some (but not all) of their load onto another CPU core.
Of course, modern operating systems are advanced enough that they multi-task multiple programs. Or, more specifically, multiple pieces of programs that are designed to identify different threads so the computer (operating system, CPU, whatever) can put different pieces of a program on different CPUs.
In short, the precise details actually get pretty complicated, and are probably subject to change as hardware evolves, and as operating systems change strategies, and compilers include different optimizations, and software designers use different techniques. I don't claim to know all of the intricate details.
What I do know is that it does make sense that you may see some software using multiple CPU cores, while other software may not be doing that (at all, or at least: as much). So, you're likely not imagining things. What you think you're noticing, probably is exactly what is actually happening.