what does the "< <( )" syntax mean in Bash?
Process substitution.
So "foo < <(someCommands)" means, first run "someCommands" in a subshell, capture the output in a temporary file, and then substitute the name of that temporary file back into the original command and run that. So in this case it would be equivalent to:
someCommands > tempFile
foo < tempFile
rm tempFile
Nine times out of ten you'd just write that as "someCommands | foo"... but using a pipe means executing foo in a subshell, and in the specific case of "foo" being readarray or read, you need the readarray or read to execute in the current shell, not a subshell, so that subsequent commands in the same shell can use the shell-variables it sets up.
Peter