p - Parent sequencer - Handle for the actual sequencer type
m - m_ should be used to denote a hidden or local variable but is used in this case for a uvm_base_sequencer sequencer handle
p_sequencer can be declared using the `uvm_declare_p_sequencer macro.
But you could also do the following which is equivalent:
my_sequencer p_sequencer;
task body;
assert($cast(p_sequencer, m_sequencer));
…
p_sequencer could be useful if the actual target sequencer has some methods or variables that you need to access. In most cases m_sequencer has everything you need.