If I am understanding you correctly you know that you have choice as to whether or not you transition all the parts with the assembly. If you are just updating the assembly then just transition it and only check out that file and run it through the workflow process for revision.
However, if you feel that you must transition all files and check them all out and then checkin only the files that have changes. Then one solution you could use is dispatch in EPDM 2010.
On checkin, update a set a variable value on the file. Then you could add an additional transition to your workflow that would not increment revision and set the revision variable based on the variable value being set. Just remember that the second condition would have to have a condition that would be not equal to the value you use to define your changed option.
I was actually considering that as an option as well. The check in of a file would set a file property Dirty = True on the part. Then I would set a condition on the transition, if Dirty = True, increment rev and change state, otherwise skip the increment and change state. I will have to test how the behavior works if Dirty = False.
B/c you have transitioned Part 2 to WIP, you will have to have either a transition 'Return to Approved' which doe snot rev the part, or Rollback Part 2 to the 'Approved' state.
neither option is real pretty, in my opinion. It's one of the things about working with a PDM that uses have to get used to: only transition / check-out what you have to.