I want to construct a 2-tape TM, that converts a binary number into unary and takes $O(n)$ time.
Let $n \in \mathbb N$ be the number I want to convert. My idea was that I just subract 1 from bin(n) until bin(n) = 0 and each time it subracted one, I add one '1' to my unary number on the 2nd tape. But I don't know if this is the right way to go and if it indeed only takes $O(n)$

If implemented properly, every subtraction will cost a number of steps proportional to the number of trailing zeroes.
Roughly, you will have $\frac n2$ numbers requiring no borrow (the odd ones); $\frac n4$ with a single borrow (doubles of an odd); $\frac n8$ with two borrows...
As the summation $\sum_{k=0}^\infty\frac k{2^k}=2$, you are on the safe $O(n)$ side.