Ruby, 88 bytes
->s{v=[];while s.length>0;s.reject!(&:empty?);v<<s.map{_1[0]};s.map!{_1[1..]}end;v.join}
A rather naive approach and my first ruby golf.
s.reject!(&:empty?)
removes all empty strings from the array;v<<s.map{_1[0]}
the first letters are added to the output vectors.map!{_1[1..]}
and the first letters are removedwhile s.length>0
the process is repeated until all strings were removed and the output vector is joined to a string