Put the lumbridgeTrees area right below the class definition (public class main...) so it doesn't need to be remade each loop.
Also, ableToWork() should return a boolean not a Boolean - there's an important distinction, though Java allows both. Also, try conditioning your conditionalsleep on interaction e.g.
if(tree.interact("Chop-down")) {
new ConditionalSleep(5000).sleep();
}
This is pretty good for a first go though gotta say that my first script took me about 2 weeks to perfect and it was a very simple one lol.
If i make a GUI, should it be in a separate class?
yes - it's cleaner
Am I using ConditionalSleep correctly?
basically
Would using States make this script better?
yes
If I have a complex script, should I put all my functions in a separate module?
You need to elaborate what you mean by 'function' because if you mean method, then definitely not. If you mean something like banking, then the answer is yes, depending on how large the script is.