a. Calling convension, parameters/types and return value are all defined by the makers of the DLL. You'll need to check the driver documentation and/or header file (.h) supplied with the board.
b. UI Thread or Reentrant - that depends on the DLL again. If you select UI Thread, than LV only calls the DLL with a single thread (the UI thread). This means that (a) only one thread is in the DLL at a time and (b) LV can't update the UI while the DLL is running. If you pick reentrant, then LV picks one of its threads to call the DLL, and if you end up with two calls to the DLL executing at the same time, then two or more LV threads can enter the DLL at the same time. Whether the DLL can handle this reentrancy depends on the DLL.
c. I am not sure how to answer this one. It sounds like a question about the driver. However, you might want to look over "Using External Code in LabVIEW", which is part of the LV doc set.