I'm still getting a handle on LVOOP myself.
Those two different methods control which VI actually gets called when your app is running.
THe static method is very similar to calling a normal sub-VI in LV except you are passing LVOOP data.
The dynamic comes into play when you have more than one class and one is a child of the other. In that case you can create a VI for the child that has the same name as a VI in the parent, but because it has different data, the data it accepts and return is different. This OTHER VI in the child will under the right condition be called instead of the VI in the parent. I understand this to be concidered over-riding. Which versino will be called? It is dicated by the data you pass to the sub_VI call. If you pass the parent data, the parent versino will be called and vise versa.
So the VI to call is determined at run-time depending on the data.
I hope I got that right!
Ben