org-mode has all the features you mentioned. Following gives you fenced code blocks:
#+begin_src c
printf("%d", 1);
#+end_src
it has both named and unnamed footnotes [1]. You can use '::' in a list item to create a description list, like so: + coffee :: a dark, bitter, stimulating beverage
+ tea :: a beverage with effects similar to but milder than coffee
+ beer :: an alcoholic drink made from grains
[1]: http://orgmode.org/manual/Footnotes.html