It isn't uncommon to see given process names listed multiple times. Often this is a side effect of 'sandboxing' - a security model that prevents one process from seeing what's going on in another process. In the past, for example, a web browser plug-in may run globally, meaning it could potentially see what's going on in other web pages, even though it's not directly being used there.
With sandboxing, each instance (e.g. web page) runs as a standalone process, and any plugins running would be unable to see anything going on in a different instance. The side effect of this is that you may see multiple instances of the plugin process running.
In the case above, MTLCompilerService is part of the graphics framework used in Safari to render web pages. You'll likely have one instance running for each web page open, and is designed so that each of them are distinct and separate from the others (this also enables you to kill individual web pages without killing the entire Safari stack).
I don't know off-hand what legacyLoader_x86_64 relates to, but it's likely something similar.
This does not directly indicate a problem, though. You can see the actual CPU load of each process is trivial - the sum of CPU load for every legacyLoader and MTLCompilerService process is a whopping 0.0, which should be the case for most of the processes, and indicates it likely isn't the source of your problem.
The OS is more than capable of maintaining thousands of 'active' processes at a time, with minimal impact to performance. Bottlenecks come within individual applications (look for apps with high % CPU figures), or some other system constraint (memory, network, disk, etc.)