There are $2^n$ players with skills $1, 2, \ldots, 2^n$ where the probability of Player A winning any game (against B) is $\text{skill}(A)/(\text{skill}(A)+\text{skill}(B))$. Set up a tournament of $n$ rounds, seeded randomly.
I can simulate this with code, but is there a mathematical technique that can help me calculate answers to questions like "what is the probability that the winner of the tournament has the highest skill?"?
Could I extend that to rounds using best of 3s, etc.
I assume this is a knockout tournament. Given the skill levels and initial seedings, you can compute recursively the probabilities of each player reaching each node of the tournament tree. That is, suppose the players at nodes B and C play and the winner gets to node A, with $p_B(i)$ and $p_C(i)$ the probabilities of player $i$ getting to nodes B and C respectively. Given the initial seedings, the events of player $i$ reaching node B and $j$ reaching node C are independent. So the probability that player $i$ (who is initially seeded in a position that could get to node B) gets to node A is $$ p_A(i) = p_B(i) \sum_j p_C(j) \dfrac{skill(i)}{skill(i)+skill(j)} $$ where the sum is over all players $j$ who could reach node C.
Average over all possible seedings to get the overall probabilities of each player winning the tournament. Unfortunately there are $(2^n)!$ possible seedings, so this part will be impractical to do exactly unless $n$ is quite small; however, random sampling of seedings should produce good numerical results.