first of all lets see whats dex file. in pure java when you compile the java code,it will be compiled into a .class
file while in android your java code will be compiled into .dex
file. (both are bytecodes but different)
incremental
: it means Gradle will use previous dex file and appends the new changes to them (not building them again every time).
the answer of your first Q: e.g. one of the limitation were you couldnt use it along with multidex* (though this limitation was solved - for sdk versions 21+ incremental builds are possible for multidex apks by rebuilding only the affected dex files)
-note: you dont need to worry about this limitations anymore because incremental option is true by default since Gradle version 2.1.0
multidex
: this option means compiling java code into multiple dex file you dont need this unless your code methods outnumbers the max limitation on a single dex file (64k methods)
jumboMode
(the answer of your second Q): there is also a limitation for strings count in the dex file enabling this option will extend the strings count in dex file (this option is true since Gradle 2.1.0 so you dont have to worry about it either)
preDexLibraries
(the answer of your third Q): it builds dex file out of libraries so it can be used in incremental builds (not building dex files every time for libraries). so using this item when clean build makes everything a little slower.