(1) With which type(s) of BTS does OpenBSC work?
Check the in bsc_hack.c : handle_options(), it will finally leads you to gsm_bts_type() in gsm_data.c and there you can find the struct bts_types. For now it supports nanobts900/1800 and bs11.
(2) What is OML NM?
OML stands for Organization and Maintenance Layer, it has a broad meaning, but in this case it's for configuring the BTS. Actually it's more for managing and configuring the network. Maybe other guys can give better explenation about OML NM.
(3) What is the best way to follow the path in the code in case of a call?
Well, you should know that the whole communication is based on select(). All socket connection and traffic is based on select(). When select is called, it blocks untill a certain amount of time or an event occurs on one of the provided file-descriptors. It than searches in a list (Linux-doublylinked-list) which FD caused an event and than the appropriate function will be called to handle it further (callback-function). In case of a call you might look at rsl layer.