Safety relays are definitely an important component of PLC programming. There are hard wired solutions, safety PLCs and safety programmable relays. Each one of those solutions requires a solid understanding of the hardware as well as software. You also need to be familiar with safety requirements, what’s required by code and just plain common sense.
I find safety particularly challenging as any mistake may potentially cause an irreversible incident. It’s important to push back on customers who “attempt” to cut corners and be “creative” when it comes to some of these functions.
On my end, I would add a solid understanding of networks. Everything’s on Ethernet nowadays, while many engineers have no clue how to connect a simple network, assign a VLAN, communicate between devices, etc.