SWPB is typically used when communicating to a different type of device that uses different encoding - i.e. in a Siemens PLC, the Most Significant Byte (MSB) is the second one, whereas in an Allen-Bradley, the MSB is the first one (reading from left to right). If you're receiving a value from a PLC with different encoding, it will be interpreted incorrectly unless you swap the bytes into the correct order.
Here's a thread on another forum which documented very well the need for it (note: that forum seems to have some serious issues at the moment, and all the posts are displaying as the same post, but if it gets fixed, it's worth a look).
CPS is much the same as COP, only it's more rigorous in that it stops the data being changed partway through. For example, if you have a CLX, the I/O data and produced/consumed tags are updated asynchronously to the code - so if you're copying data from a produced/consumed tag or a physical I/O table, it could potentially change partway through execution of your COP instruction. This may or may not be a problem; it depends on your application. In most cases it doesn't really matter, but if it does you can use CPS. CPS will not allow anything else to interrupt it until it's finished copying, so you can be sure that your data was not changed partway through. In most cases, COP is just fine; if you have an application where you're copying from a produced/consumed tag and need to be 100% sure that you're copying a complete, "single-updated" data image, then perhaps a CPS is necessary.
Personally, I haven't ever found an application where a COP didn't do the job nicely, and seeing as CPS is much more processor intensive, I tend not to use them. Others prefer to use CPS regardless just to be sure of what they're doing.