Just like in a physical neighborhood of people's homes, you might consider the house directly adjacent to yours to be your neighbor and the next house to be the neighbor of your neighbor, but the whole area is your neighborhood... well... it's complicated.
The first part of your question boils down to 'do OSPF neighbors need to be directly connected to each other to for a neighbor adjacency?'. The answer is generally yes, they need either a direct point-to-point link between the 2 neighbor devices or a 'logical' direct connection such as an encapsulated link like a GRE tunnel that simulates a direct link that can support broadcasts. You can form a neighbor adjacency over a non-broadcast multi-access network such as ATM or Frame-Relay but it is more complicated and requires special configuration to make it work properly.
And no, it does not relate directly to 'C' or connected state route entries in the routing table, though the router might coincidently end up listing routes in the C state which happen to be the same interfaces that are used for OSPF neighbor adjacency which can make them seem closely related.
Connected state routes simply mean routes learned due to it being configured on a connected interface on the router. That is not what OSPF refers to when it says neighbors must be connected.
OSPF neighbors need to be able to send and receive broadcast 'hello' packets to each other to begin establishing the neighbor adjacency so having them directly connected to each other via interfaces that are configured to participate in the OSPF area (neighborhood) makes that very easy to do with no additional work. You can establish OSPF adjacency without the use of broadcasts but it requires more configuration, as mentioned and is not as commonly done.
Editing here to add at Ron's suggestion that broadcast is not the only way to establish adjacency. OSPF can be configured manually to use unicast based connection setup over non-broadcast oriented connections. This can be useful in either very small environments or when the connection medium is not friendly to broadcasts or other complex setups.
In your example, R01 and R03 are not considered neighbors in most common implementations because they are not connected to each other, though they might be in the same OSPF Area meaning the routes they share with R02 can be passed on so that R01, R02 and R03 all end up with a coherent set of routes and can reach each others networks that are configured to participate in OSPF.
The terms you list at the end are not actually all specifically related to OSPF.
Directly Connected simply means that they are directly connected to each other via a single cable path or logical connection/tunnel. There are some edge cases where you might argue semantics but for the most part, this means exactly what you would expect.
Neighborhood is not a term in OSPF. You can use it but it is not a standard meaning or widely used term in my experience for OSPF. Area is probably the word you want and it has specific meanings in OSPF.
Adjacency also has specific meaning in OSPF and it means the OSPF neighbor state has been established between 2 OSPF neighbors and they are exchanging route information. IF they are not able to do that then they do not have an adjacency. They may be in some stage of trying to form one, but it is not a full adjacency until they are able to exchange route information.
Here is a good guide: