I don't believe that there are any limits. If there are I haven't run into them.
"also, is DBPro still bugged so that you have to call your functions and apply variables to all your udts?"
If you mean will something like this(that only uses one function when two are declared) fail. No.
do
functionOne()
loop
function functionOne()
rem used functioned
endfunction
function functionTwo()
rem unused function
endfunction
And as far as I know you don't have to apply variables to all of your UDTs. This should work just fine.
type Blah
a
b
endtype
do
rem nothing
loop