Create a "forum"-Role with the necessary rights for creating new topics and replies. Then assign this role to the student user group limited e.g. by the subtree of the students forum. And assign the role to the staff user group limited to both subtrees (depending on your setting you probably need to assign the role to times to the staff - students and staff subtree - or assign it to the parent node of staff and students forum.
1. Students should not see staff forum topics, only see students forum topics.
2. Staff should see both, staff forum topics and the students forum topics.
3. Public should see neither..
I guess this is because anonymous role can read all in standard section. (I don't know your actual role settings.) You can assign a new section to the node including both forums or only to the forums (e.g. name it "forum"). Then - considering the anonymous role only can read the standard section - the forum role needs the additional rights to read the forum topics (something like content/read, class(Forum topic, forum reply, ...), section (forum)). The assignment to the right forums for students or stuff is just done by your limited role assignments to student and staff group.