My website has 2 types of users: Customers and Staff. I want each type of user to be able to login in a separate page. Is it OK if I show a "staff login" link next to the normal users (customers) login link? Or should I somehow hide the staff login link from normal users?
I am assuming that the vast majority of your users will be customers. In this case, the most common practice I have seen is to have a very visible form for customer login, with a smaller link below it or elsewhere on the page that takes the user to a separate staff login form. If, for technical reasons, you want to have both login forms on one page, I think this would be alright as long as you do take steps to keep the emphasis on the customer login form. Maybe the customer form has a bright red or blue login button, while the staff form has a grey one? I would not go so far as hiding the staff login; you want to avoid customer confusion by accidentally using the wrong login, but you don't want to add too many extra hoops for staff users either.
Simplicity is the key. So, you should apply the principle of Occam's razor here. For example, how WordPress and other CMS are not distinguished login types: There is a single log-in page and everyone gets to the page that corresponds to their user role.
The other typical solution is using subdomains like: software.com > yourcompany.software.com In this case, everyone who is accessing the page through the subdomain has a different user role and the subdomain can be secured as well. Everything depends on what you really want to achieve by separating the user groups not just by their roles, but redirecting them to different log-in pages.
But this is not a UX issue. It is rather technical and it is handled as a business issue.
Since majority of the users are customers prominence must be given to customer users and then on a side you can include staff login as they are also in a way customers but of a different type.