The warm_start options uses the primal and dual variables from a previous solution if one exists.
If you have warm_start enabled and solve your problem more than once (e.g. after changing some parameter) the solver will restart from the primal/dual iterate where it left off. Otherwise it starts over from 0.
If you have warm_start enabled but do not provide an initial condition, the solve just starts from 0 (i.e. same behaviour as without warm start).
If you want to provide an initial guess, you can use (through the matlab interface) the ‘warm_start’ method implemented in the solver object. See "help osqp/warm_start” in matlab. Usage in the python interface is similar. See here:
http://osqp.readthedocs.io/en/latest/interfaces/