Everything is relatively simple to understand when visualized like it would be on a lecture slide. But reading about it in manpages and blog articles is overwhelming.
ld -r elf -o out should be a no-op on well formed input. It means create a file that will be passed to another linker invocation later. So it's a means of composing together N object files to get one file that you can use in place of those N. A little like a library.
I structured builds like that for a while. Source foo.c to foo.o, directory bar to bar.o containing whatever was in that directory relocatably-linked together, possibly internalising symbols as it goes.