This is not the correct approach. It only works by accident.
mysel.paragraphs.insertionPoints are all the insertion points in the current paragraph. If there are 100 characters, then there are 101 insertPoints (on each side of each character). insertionPoint is to the left of the first characer,  is to the right of the first character,  is to the right of the 2nd character, etc., up to  to the right of the last character.
insertionPoints[-1] refers to the last insertionPoint, , which is actually after the paragraph, per se, so formats the next paragraph.
insertionPoints[-2] refers to the 2nd-to-last insertionPoint, , which is the the left of the last character.
I'm not sure what the best way to deal with this is. Perhaps:
mySel=app.selection; p = mySel.paragraphs; p.appliedParagraphStyle="myPstyle1"; p = p.insertionPoints[-1].paragraphs; p.appliedParagraphStyle="myPstyle2"; p = p.insertionPoints[-1].paragraphs; p.appliedParagraphStyle="myPstyle3"; ...
I suppose the exact method depends on what you're trying to do.
THANK YOU, John!
That's exactly what I needed!
Especially thank you for clear explanation of InsertionPoints - now I realize I had no idea how it really works... couldn't find this nowhere on the net...
yeah, I know your impressive source, but it is for those one step beyond... I still must discover the very basics...