Just a note on the data structure. Wouldn't a binary tree (a balanced one; red-black, avl etc) give a logarithmic time constant for insertion while a list will give you a worst case bound of n, n being the length of the list?
https://hackage.haskell.org/package/containers-0.5.6.3/docs/Data-Map-Strict.html :: Data.Map uses a ordered balanced binary tree implementation for storing and retrieving key value pairs.
Now, with that out of the way,
For 1, you are defining OrdList a to be a new data type (or type with a data constructor). Just to make sure users of this package cannot construct ill-formed OrdList, you can hide the constructor and provide your custom constructor (like fromList and its ilk).
For 2., I don't know what you mean but OrdList is a datatype or rather a type constructor which takes an additional concrete type to form a concrete type. In other words, OrdList is of the kind (*->*). Lookup kinds (wikibooks is good for this and so are
http://dev.stephendiehl.com/hask/ and learn you a haskell for great good).