Not to specify a CPU generally, except in the case that the CPU you select is a brick type, with built-in I/O. Even there, there are usually options.
You do need to specify the outputs you need as you define them in your application though.
For general DC on/off control, transistor outputs are most common, and Sourcing outputs are most common there. A Sourcing output supplies +V (we'll assume 24VDC here) when it is on, and is an essential open circuit when it's off.
For things that you need isolated or dry contacts, relay's are generally the typical choice. For instance, if you need to switch the RUN command to a drive that may not be able to be tied to system common, or has a unique input requirement.
Triac outputs are generally used for driving AC output devices, such as solenoids, contactors, and the like.
Note that some devices (Electronic type starters and neon bulbs in particular) may not work well when driven off of a transistor or triac output, as the leakage current could be enough to keep the device energized even if you want it to be off.