This is a derivative question, but I'm inquiring as to the data structures that you should at least be familiar with for their usefulness. These structures are too hard to implement without some expertise however.
I would say a good boundary between the two is a heap -- you should be able to code a heap, but it would take you a day. Not appropriate for this would be a BST, etc. Edit: I see the point that it depends on what you are doing. I think it would be awesome to have a list with a phrase summarizing why you use it!
Here's a list to start:
- B+ trees: good general indexing structure on a single key
- K-d tree: spatial data
- Red-black tree: self-balancing BST; also AVL or splay tree
- Skip list: good hybrid structure for either random or (pseudo)sequential access
- Trie: linear time string search