That's a lot of parts for a single question.
•what conventions did programmers employ to deal with segmentation?
•what extensions exist for common programming languages to accommodate the segmented address space?
These seem to be related.
Compilers use memory models that make it transparent. The models have names like "tiny", "compact", "large", and "huge" (and there are even more than that). They generate memory accesses using pointers that are "near" or "far". For "tiny" models, code, data, and stack all must fit in the same segment; "compact" has one 64kb block for code, and multiple segments for data, and the compiler dynamically assigns the proper value for DS; "large" has multiple 64kb blocks for code and data, and the compiler dynamically assigns the proper values for both CS and DS; "huge" is like "large" but allows data structures to exceed 64kb is length, and the compiler uses pointer trickery to deal with it.
Linkers grouped all of the global variables into the data segment(s), and depending on the memory model. To access the variables, the compiler would generate either a direct move from the current DS, or an LES/BX-style access and then an ES-overridden memory access.
Calling into a far routine required a "far" (generally 0x9A segment:offset) call, and the CPU takes care of saving the calling segment on the stack. The callee performs a "far" return and the CPU pops the segment register from the stack to reverse the operation.
•what techniques exist to write relocatable code for the 8086 and 80286?
The "MZ" (.exe) file format carries a relocation table that is generated by the compiler, and allows the file to be relocated by the operating system on load. There is no need to perform explicit position-independent coding if you are using a high-level language.
•are there any free/open source compilers that generate code that uses more than one data segment I can use for studying?
Watcom C++ (http://openwatcom.org/) is free and open-source.
Borland (now Embarcadero) Turbo C (http://edn.embarcadero.com/) has a free option after registration on their site.