potresti fare così:
nell'if del primo thread ci metti un return.

poi all'interno del thread chiami il metodo download preceduto da if chackbox4.checked.

In questo modo il primo thread esegue tutte e due le funzioni in ordine ( se entrambe le checkbox sono checkate), oppur eesegue solamente il secondo thread nel caso solo una checkbox sia checkata.

Per il secondo problema prova a chiamare l'invoke sulla form stessa:
codice:
this..Invoke(new BarDelegate(UpdateBar));