Limit switches blocks/stops the movement.
Home switches sets the reference point (machine zero). Sometimes a single switch can serve both purposes, depends on what it's connected to.
You will need home-switches connected to and setup in your Octopus Pro. OpenPnP then issues the G28 command which will drive the motors towards the home-switches to find the machines zero-position (or whatever you set it up to be). G90 is something else, it is used to tell the controller that positions you give it are to be interpreted as absolute coordinates (as opposed to relative, ie distance).
Limit switches aren't mandatory. Both the controller (at least Smoothie) AND OpenPnP has software limits you can setup in order to prevent user errors from running the machine off the rails. That, of course, doesn't cover cases where loss of position makes the controller drive the machine off the rails but with closed loop that really shouldn't be an issue.
On my machine I have optical sensors for home/reference, connected to the controller board (Smoothieboard v1 in my case). This (and a homing fiducial) takes care of the homing. I do have limit switches on X and Y and these are wired straight into the servo drives for those axes. Mostly because these are 400W AC-servo motorn and IF I'd run those into a hard stop at full speed I'd certainly break something.
So, towards each end of X/Y travel I have: OpenPnP soft limit->Controller soft limit->Drive limit switch->Crash. In the event that I hit the actual limit switch OpenPnP will not be aware but I can live with that. On Z I don't have any limit swith, only home-switch and soft limits.
I think the above covers your second question. As for the first, your typical closed loop stepper drive (like the CL57) doesn't really have a zero point. Their "zero" is wherever it's powered up. The encoder is used to keep track of the motor shaft relative to input pulses, it's up to who's sending the input pulses to keep track of machine position. Now, something like the MKS might (I don't know) have more tricks up its sleeve, like built in indexer functions etc and for THAT they might need an external switch to set a zero point but for what you're doing it shouldn't be needed and the home/reference switch should go to the controller.
/Henrik.