For interactions between non-nearest neighbour qubits, ancilla qubits are required, together with SWAP gates. The state of one of the (in this case) two qubits is swapped with the ancilla. This operation is repeated until the qubits are NN, and then the interaction can take place. After this is done, then the state of the ancilla is swapped back with the ...
If you don't have the ability to perform the controlled-not directly between a pair of qubits, then you simply need to swap the qubits to place them onto a pair of qubits which can have a controlled-not applied to them.
I'm not sure what your specific question is - the IBM Q processor does not implement an error correction scheme by default, so the theorem doesn't apply.
Furthermore, the statistic provided in the Wikipedia page suggests this chip would be incapable of sufficiently depressing the error rate:
At a 0.1% probability of a depolarizing error, the surface code ...
You can also create a Statevector, that can be directly initialized as follows:
from qiskit.quantum_info import Statevector
sv = Statevector.from_label('11')
You can use sv.evolve(qc) to apply an operator/circuit to the state, where qc is the operator/circuit. sv.data gives you the numpy array, containing the actual implementation of the state.
Check this ...