To elaborate: идти is "to go on foot," especially unidirectionally or when setting out; ходить is "to go on foot multidirectionally," usually used with an indication of frequency, e.g., "Я хожу на работу каждый день" (I go to work every day). The expectation with ходить is that you're talking about the bidrectional nature of the travel.
In this example, он едет is from the verb ехать, which is essentially the "by transport" version of идти, often translated as "to drive/ride." The "by transport" version of ходить is essentially ездить.
There is no difference: Russian does not distinguish these two types urban settlements that some English speaking countries define (everything "more of a town" than посёлок городского типа is a город). Settlements that have as little as 2000–5000 people are sometimes called "towns".
They are a bit easier for your brain if you listen to the forms.
The forms of есть you are thinking about (едим, едите, едят) have their personal ending stressed.
All forms of ехать are stem-stressed (еду, едешь, едет, едем, едете, едут / ехал, ехала, ехало, ехали)