I'd like to be able to define a role "foo" and then have a subset of my courses that are only available to users with role "foo". So users with the system role "foo" would see a few courses on the site front page that other uses without role "foo" would not. Is there a way to do this using the roles system?
Are you wanting courses or blocks to be hidden from certain users? If it's courses, then you could make use of the view hidden courses capability. If you're not sure how to make use of this capability, please say so and someone will explain.
Is there a way to have a course hidden, but appear for all those that are enroled in the course?
Yes, it is possible (the link to it will be grey in color, but fully accessible), if you modify role permissions on the level of this course.
E.g. in 1.9 go to Assign Roles > Override Permissions > Student >set View hidden courses to Allow.
For people with Instructor role in the course - this is the default behaviour.
Now, is there a way to do the same thing for categories as Elena mentioned for courses?
my situation is a bit different
Is there a way i can make a link/resource/page or menu accessible to only enrolled users even if he's just registered in a single course and not just to all registered(authenticated) users?
It could be anywhere though i will prefer it to be on the frontpage but if it has to appear in all courses its still fine.It should only be accessible to users who are enrolled in atleast one course site-wide,not really a particluar course alone.Its a library page link that i want only enrolled users in my school to have access to.Otherwise if you have a better idea i will be grateful to know what it is.