I have used ICAM, PWORKS, GPOST and I am hooked with ICAM because it has lots of nice features especially its IDE interface which is not available in either PWORKS or in GPOST .
If you want to build your own custom post-processor then it is not that hard for up to 3-axis machines. But once you begin to deal with multi-axis machines it becomes really challenging and demanding as it requires a thorough machining/kinematics knowledge. But then again if you are comfortable with analytical geometry and vector math then it could be a fun project.