Difference between a ##5 b and a |->##5 b

In reply to prashantk:
Neither one of them are assertions by themselves. The construct
a ##5 b
is just a sequence that says “a is true, and 5 clock cycles later, b is true”. If you were to use that sequence in a concurrent assertion, it would become

assert property (@(posedge clk) a ##5 b);

The would mean at every clock cycle, a has to be true, and 5 clock cycles later b has to be true. But this essencially means a has to be true all the time.
The construct
a |-> ##5 b
is a property that says "When a is true, b must be true 5 clock cycles later.
This used in a concurrent assertion would become

assert property (@(posedge clk) a |-> ##5 b);

Now only on the clock cycle when a is true is there a requirement that b be true 5 cycles later.