As per my understanding there are individual program counters for each ARM Core (if its quad core there will be 4 individual program counters which will point to 4 different locations of code for parallel execution).
Is my understanding correct? If yes, how can I access each of these program counters(for example in assembly language. Is it like this PC[0], PC[1],PC[2], PC[3]
?
Exactly the same way you do on single-core ARM because each process on your system executes on its own core at any exact moment (can switch to another core but it depends) and sees its own single program counter.