Second question. Since the diffeq for g is second order, you need another condition, so I added one for its x derivative. I also changed g[x] to g[x,y] in your code. This will not make g vary with y, but NDSolve evidently likes all its dependent variables to be consistent. NDSolve can then solve for the two dependent variables f and g. The following works great in M8 (in my opinion the most stable version), but M11 has problems.
Clear[f, g]
sol = NDSolve[{D[f[x, y], x, y] == D[g[x, y], x]*y,
D[g[x, y], {x, 2}] == 2,
g[0, y] == 0, (D[g[x, y], x] /. x -> 0) == 0, f[0, y] == 0,
f[x, 0] == 0}, {f, g}, {x, 0, 10}, {y, 0, 10}];
Plot3D[Evaluate[f[x, y] /. sol[[1]]], {x, 0, 10}, {y, 0, 10},
PlotRange -> All]
[![enter image description here][1]][1]
Plot3D[Evaluate[g[x, y] /. sol[[1]]], {x, 0, 10}, {y, 0, 10},
PlotRange -> All]
[![enter image description here][2]][2]
[1]: https://i.sstatic.net/mBZB5.jpg
[2]: https://i.sstatic.net/frPpz.jpg