how to implement Atxmega256 Port external interrupt
what is the difference between interrupt0 and interrupt1 on each port?

They have exactly same functionality, but each triggers its own ISR and you can configure each independently (enable, priority ...). You can set which pins triggers which interrupt with respective INT0MASK and INT1MASK registers.
how can i know which pin has fired the interrupt in ISR?

As far as I am aware there is no other way than reading the port status (IN register) and comparing with the previous stored state. Short pulses (or if your ISR has high latency) can be missed, but there is no other way AFAIK.




Nevertheless for your use (timestamping pin change event) it can be more suitable to use TC in capture mode. You will need two counters to cover all 8 channels, multiplex one EVENT channel for each input pin (you will use all 8 available event channels, so so usable only if you do not need event system for anything else) and configure port change event as source for the capture.