(1). Самым простым является очередь сообщений, а самым сложным - общая память.
Я думаю, это потому, что очереди сообщений просто требуют указателя на структуру данных очереди сообщений, в то время как разделяемая память требует присоединения разделяемой памяти к адресному пространству процессов обоих процессов, и выделение разделяемой памяти затруднено, когда эти два процесса включены разные машины.
(2). Проще конвертировать общую память Posix, чем общую память System V, в сетевой IPC.
Я думаю, это потому, что Posix поддерживает как семафоры на основе памяти, так и именованные, и не требует вмешательства ядра, тогда как System V требует вмешательства ОС.