Thanks for getting in touch! Whilst this is a bit confusing, this behaviour is expected. The “Deployment will fail if a deployment target is unavailable” feature is used when a deployment target is present but unavailable. In your example here, there is no deployment target to be unavailable as the target role “EotMessaging Deploy Server” contained no machines to deploy to.
As for setting the step as “Required”. This feature refers to manually excluding steps from your deployment after you create a release. If you set the step as required, it can still be skipped with run conditions or the above case where no machines were found in the role. Marking a step as “Required” will only stop you from excluding the step from the deployment.
See the following screenshot with “This step is marked as required”:
Let me know if this helps clear things up. If you have any further questions here or are encountering any issues, please don’t hesitate to let me know.