For question 1), lets add the topic of positive homogeneity to the discussion:
Whenever a risk measure is positively homogeneous, we can calculate risk contributions.
A risk measure is positively homogeneous of degree $\lambda$, if $$R(cx)= c^{\lambda} R(x),\quad \text{with}\ x \in \mathbb{R}^n$$
If then, $\lambda>0$, this is equivalent to the Euler relation (for $R$ differentiable):
$$\lambda \cdot R(x) = \sum_{i=1}^{n} \frac{\partial R}{\partial x_i}(x) \cdot x_i.$$
That means, that we can decompose the risk measure to its marginal risk contributions $\frac{\partial R}{\partial x_i}(x) \cdot x_i$. So this must be satisfied if we want to calculate risk contributions. Risk Parity is then the case of all of these being the same value.
So one of the assumptions already lies in the definition. This is fulfilled for the VaR and the expected shortfall in case of a normal assumption. For distibution-free models, who knows what a risk contribution means?
So far so good, we have defined a Risk Parity portfolio and we assume our Risk measure is homogeneous.
Lets also try to answer 2 on one attempt:
This paper is a pretty good resource for the topic. It looks at the following problem $(\text{RC}_i(x) = \frac{\partial R } {\partial x_i} \cdot x_i)$:
Find $x$ such that
$$ \text{RC}_i(x) = b_i R(x) \\ b_i > 0 \\ x_i > 0 \\ \sum_{i=1}^{n} b_i = 1 \\ \sum_{i=1}^{n} x_i = 1$$
So the lines mean, that the Risk contributions should fulfill the budget constraints (for Risk Parity, $b_i = 1/N$), the weights are positive and all weights and budgets sum to 1.
The proposed problem is here (I made good experiences with it):
$$ y^\ast = \text{argmin} R(y)\\ \sum_{i=1}^n b_i\text{ln}y_i \geq c \\ y \geq 0$$
for arbitrary constant c. The unit weight constraint is now not fulfilled, but after rescaling the solution is
$$ x^\ast = y^\ast / (\sum_{i=1}^n y_i^{\ast}).$$
But why is this problem a risk parity problem?
The Lagrangian is
$$ L(y;\lambda) = R(y) - \lambda \sum_{i=1}^{n} b_i \text{ln} y_i$$
and the first order condition at the optimum $\frac{\partial L}{\partial y_i} = 0$ yields:
$$ \frac{\partial L}{\partial y_i} = \frac{\partial R}{\partial y_i}(y) - \frac{b_i}{y_i} = 0.$$
But this is exactly the budget constraint.
This is a pretty scalable optimization problem but it is not linear so you have to take care. I think it will handle a couple of variables very well, maybe around 100 it will get a bit tricky but I havent tried that explicitly.