Hello @Stefan Kraus,
Welcome to this moderated Azure community forum.
You are very busy regarding Azure IoT already. Great!
Regarding the incoming IoT Hub messages sent by devices, these are stored for a limited time on the IoT Hub to be forwarded over either the 'event-hub-compatible-endpoint' or any of the routes or both. Other services like Azure Data Explorer, Azure Function, CosmosDB, blob storage, etc. can receive the messages.
The IoT Hub does not expose the messages directly (for security this is a good decision). You can view the individual messages by consuming them with any of the services or using the VS Code IoT Hub Extension or the Azure IoT Explorer.
The Azure IoT hub does not support device-to-device communication out of the box.
You need to build some custom logic in the cloud that is receiving logic from one device, is making a decision, and sends a command (direct method or device twin desired property change) to the other device.
If you rely heavily on device-to-device communication, check out the new EventGrid support for MQTT (in public preview at this moment).
Here, using MQTT, devices can exchange messages directly where spoofing can be prevented.
Check out this blog post for more details.
Finally, this communication is done between devices via cloud communication.
This makes it vulnerable to network outages.
Why not use a local Edge solution, managed from the cloud? Check out the Azure IoT Edge documentation.
You can use the internal routing for your PLCs to connect them, or you can integrate a local MQTT broker on the edge, managed in the cloud.
If the response helped, do "Accept Answer". If it doesn't work, please let us know the progress. All community members with similar issues will benefit by doing so. Your contribution is highly appreciated.
(this message is written word for word by a real person)