Well, a popular method is box collision, not to be confused with point collision. Box collision works by elimination, like it assumes there's a collision, then does some simple checks to disprove it.
It can make it clearer to refer to the parameters as left, right, top, bottom... so if we call the boxes A (mario) and B (platforms):
Function boxcol(Al,At,Ar,Ab,Bl,Bt,Br,Bb)
col=1
if Al>Br then exitfunction 0
if Ar<Bl then exitfunction 0
if At>Bb then exitfunction 0
if Ab<Bt then exitfunction 0
Endfunction col
So you would pass the 2 sets of box coordinates to that function, and it will assume they overlap, and check each side of A to see if theres no way there can be a collision. If all the checks fail, then there is a collision. For instance, if box A's left side is further than box B's right side - there's no way there would be a collision.
Point in box collision can yield some weird results, I prefer this technique, as it also accounts for box inside box collision - it's an overlap check, so it's fail-proof, wheras point in box can easily be broken.
For sliding collision, maybe just store the previous X and Y position and use that in a crossref check, like this:
sync on
sync rate 0
`Platform
Bl=100 : Bt=100 : Br=200 : Bb=150
do
lx=x
ly=y
x=mousex()
y=mousey()
if charcol(x,y,20,Bl,Bt,Br,Bb)=1
if charcol(lx,y,20,Bl,Bt,Br,Bb)=1 then y=ly
if charcol(x,ly,20,Bl,Bt,Br,Bb)=1 then x=lx
endif
ink rgb(0,255,0),0
box x-20,y-20,x+20,y+20
ink rgb(0,255,255),0
box Bl,Bt,Br,Bb
sync
loop
Function charcol(x,y,size,Bl,Bt,Br,Bb)
col=boxcol(x-size,y-size,x+size,y+size,Bl,Bt,Br,Bb)
Endfunction col
Function boxcol(Al,At,Ar,Ab,Bl,Bt,Br,Bb)
col=1
if Al>Br then exitfunction 0
if Ar<Bl then exitfunction 0
if At>Bb then exitfunction 0
if Ab<Bt then exitfunction 0
Endfunction col
I haven't tested it, but hopefully it will work.

Health, Ammo, and bacon and eggs!
