Concerns of note:
Common mode voltage range - set by the 500V common mode voltage divided by 1/100. Should be OK for pretty much any op-amp that runs from a single 12V supply.
Output voltage range - most "jellybean" general purpose bipolar op-amps do not swing close to either supply voltage, so you'll need to move that closer to mid-supply. Instead of connecting the topmost resistor to 0V, connect it to 6V, for example.
The matching of the resistors is critical, and if there's any AC component to the measured common or differential mode, the AC CMRR adjustments will prove necessary - typically trimmer capacitors in various places.
A different approach would convert the voltages to currents, and perform subsequent operations on the currents. A high-level scheme of the approach would be:
simulate this circuit – Schematic created using CircuitLab
VCCS1 and VCCS2 use a resistor to convert voltage to current I10 and I20 respectively, and then mirror that current. CCCS3 mirrors I10 and injects its into the current summing node. Out of that node flows current I20 and the offset current I1. The net current into the current summing node is mirrored by CCCS4 and subsequently converted to voltage on R1.
This could be implemented using op-amp based current sources/mirrors.
Alternatively, a somewhat hilarious implementation of such a circuit, with DC CMRR mostly dependent on thermal tracking of R1 and R2, is shown below.
I1 can be a current reference or a current source driven with a resistor from 12V. The common mode extends to 0V, although full accuracy is only available above input voltages of about 20V.
The bandwidth of the circuit can be adjusted by scaling the currents. The current consumption from the 12V supply is maximum 0.9mA with the currents shown. The output voltage would be typically buffered, scaled and fed to an A/D converter.
The current mirror design comes from “Current mirror circuit with accurate mirror gain for low β transistors” by Chen, Whiteside and Geiger, and performs admirably with discrete transistors.
With some care in trimming and transistor pair matching, the accuracy at room temperature should be better than 0.1%, but you absolutely should verify that for yourself. Some AC trimming may be necessary as well, depending on the desired bandwidth of operation and the common mode frequency content. A common mode rejection choke could be used to improve AC CMRR.
The trimmers should be initially set to the center point position, and then adjusted as needed. The 10kOhm bias resistors are not critical and can be 5%. Other resistors should be 0.5% or 1% and 50ppm/K tempco or better.
Note that this circuit does not claim to be the best in any way nor even practical for a product. A well implemented discrete in-amp would use potentially fewer transistors and have better AC performance anyway. It's meant to be funky and illustrate how discrete current sources can be harnessed for some degree of DC accuracy.
simulate this circuit
D1 and D2 bring the load voltage on the output of the current mirrors closer to the reference voltage. This minimizes the offset of the current mirror and stabilizes its current gain. The follower Q45+Q46 does the same job. It couldn't be a Zener diode, since the voltage on the other end of it varies - that's the voltage proportional to the current.
In a physical circuit, the performance may be potentially improved by connecting the collectors of Q21, Q44 to ground, and of Q7, Q14 to 12V, instead of connecting them to their respective bases as shown. This will be especially the case if the beta of the transistors is low (<50). With high beta transistors - the simulated ones have beta=100, the connection as shown seems to provide most accuracy.