What about pointers? They are fundamental to data structures, and languages which doesn't clearly show the difference between pointers and values makes understanding data structures much harder, as many data structures relies on multiple pointers pointing to the same data and that simply doesn't make sense if you seem them as separate values.
That depends on purpose of the teaching. If you want to teach them basics what the thread starter mentioned is enough. If you want the deeper understanding you should teach them how it boils down to machine code or add a bit of Assembly to the menu. It explains pointers and other such things pretty well.
I think this is a good point. You can implement a linked list in python, but, in my opinion, unless you already understand pointers, it's rather confusing. Doing it in c makes everything explicit.
I don't know about that. It might be harder to teach loops in Haskell, APL, or Prolog than it is in some more conventional languages.