Great move!
The IO is reasonable from Rtelligent and Deiwu. I have xml configs for both
github.com/rodw-au/linuxcnc-cia402
Rtelligent has PWM
I have both but used Rtelligent on my mill.
There is another one on Aliexpress with a few more features including Encoder but you may need to write the XML which is not that hard.
Note the IO's on the drives are more for homing etc but do work for general IO
I do not use internal homing. I intend to one day but I have had my little Ethercat homing lab on my desk for 12 months now untouched...
For spindle I used RS485. It actually interaces nicely with QTdragon GUI and is very stable speed wise when tested with a laser tacho
I did not end up adding an encoder due to cost. I ended up using a thread mill that gives perfect results. I now wonder what all the fuss is about with encoders. Its only ever needed for threading which is rarely done and thread mills are much easier on the machine and don't need an encoder!