In a nutshell:
SPCs process all available services such as IDP, IPSec etc.
NPCs are used to distribute inbound and outbound traffic to the appropriate SPCs and IOCs and responsible for QoS and DoS, DDoS protections, screens etc etc.
Here is the packet flow for high-end devices:
1) Packet enters through IOC.
2) Packet traverses the switch fabric from the IOC to NPC. NPC performs a flow lookup. If the packet belongs to an existing flow, NPC forwards the packet to the SPC associated with the session. If the flow doesn’t currently exist, NPC install a new session and assigns the flow to an SPC for further processing. NPC also performs CoS, policing and shaping
3) Packet traversed switch fabric to its associated SPC in which security processing and forwarding/routing occur.
4) Packet travers the switch fabric back to an NPC in which packet processing,shaping,CoS occur.
5) Packet travers the switch fabric to IOC associated with the agress interface and sent to physical medium.