Hey Rad,
Cheese may have just written it himself seeing as it's not a massively complex code - though if it is 1:1 to the game you mention then he may have decompiled. Decompiling is frowned upon by some people last time I checked, though that was about 3 years ago, and the forum I was at previous had a rule where you weren't allowed to post a link to it (I'm not sure how enforced it was, most people just PM'd it). I don't want to risk it if it is also the case here, but you can just google "Gamemaker Decompiler" to find a link to the program; though I'm unsure if they make a Studio version, which is fine since most fangames are made in GM8/GM8.1.
In terms of your problem, if there's no sprite you can't do collisions as there's nothing for the player to collide with, regardless of if the object is producing particles. The reason the portal is spawning at the top left of the 32x32 block and not the middle is because before you had a sprite which was centered in the middle of the block and that's where the particles would spawn from but since removing it you don't. In other words, you need the sprite, you just don't need to draw the sprite. I'm not on a computer with game maker currently so off the top of my head I would suggest putting the sprite back into the object but setting it invisible by unchecking the visible box in the object; failing that adding a draw event and just putting in some empty brackets like this "{}" may work. While these will fix your collision problem and also not draw the sprite I am unsure as to whether they will nullify the particles, but I doubt it.
If that doesn't work and they do stop the particles then add this to the step event "if(collision_rectangle(x,y,x+32,y+32,player,0,0) { XXXXXXXXXXXXX }" and then where I've put the X's add the code you want for collision (in this case room changing). Also, why it appears in front of your player is to do with this line of code "part_system_depth(Sname,-1);", if the player object's depth is -1 or lower then the particles may/will spawn in front of it. Try setting it to 0 or 1.
Hope this helped, I find GML terribly hard to explain so if you need me to elaborate on anything don't hesitate to ask :~)