1) A process's threads can run in parallel in multiple CPUs/cores. Multi-threading wouldn't be nearly so useful if only one thread could run at a time! By default the kernel can and will schedule a thread on any available core. Other threads, even if part of the same process, running on another core makes no difference.
There is a cpuset system where you can lock threads to some subset of available cores. You could require a all threads of a process to run on a certain core(s). See pthread_getaffinity_np().
2) The thread, not the process, is the basic scheduling entity in Linux. So yes, processes with more threads will get a bigger share of CPU! What you are asking about is PTHREAD_SCOPE_SYSTEM vs PTHREAD_SCOPE_PROCESS See pthread_attr_setscope(). Linux threads (NPTL) does not support the latter. Also see pthread_setconcurrency(), which also does not do anything on Linux, since Linux is 1:1.
However, Linux does support a concept called "group scheduling." Look into that as a way to achieve fairness between processes with differing number of threads.