One possibility is to use datatool. The data could be stored in a CSV file. For example:
Word,Category,Example,Meaning
jump,verb,"The cow jumped over the moon.","To project one's self into the air through the muscular action of feet and legs."
cat,noun,"The cat sat on the mat.","feline animal"
hungry,adjective,"The hungry duck ate some corn.","desire for food"
If the file is called vocab.csv, then it can be loaded using:
\DTLloaddb{vocab.csv}{vocab}
You can then sort it according to a particular column using \DTLsort. For example, to sort on the Word column:
\DTLsort{Word}{vocab}
You can then iterate over the data using \DTLforeach. For example:
\documentclass{article}
\usepackage{array}
\usepackage{longtable}
\usepackage{datatool}
\DTLloaddb{vocab}{vocab.csv}
\begin{document}
\section*{Vocabulary List}
\DTLsort{Word}{vocab}% sort the data
\begin{longtable}{ll>{\raggedright}p{.25\linewidth}>{\raggedright}p{.25\linewidth}}
\bfseries Word &
\bfseries Category &
\bfseries Example &
\bfseries Meaning
\DTLforeach*{vocab}% database label
{\Word=Word,\Category=Category,\Example=Example,\Meaning=Meaning}% placeholder assignments
{\tabularnewline\Word & \Category & \Example & \Meaning}
\end{longtable}
\section*{Vocabulary List (by Category)}
\DTLsort{Category}{vocab}% sort the data
\begin{longtable}{ll>{\raggedright}p{.25\linewidth}>{\raggedright}p{.25\linewidth}}
\bfseries Word &
\bfseries Category &
\bfseries Example &
\bfseries Meaning
\DTLforeach*{vocab}% database label
{\Word=Word,\Category=Category,\Example=Example,\Meaning=Meaning}% placeholder assignments
{\tabularnewline\Word & \Category & \Example & \Meaning}
\end{longtable}
\end{document}
(Change the argument of \begin{longtable} and the table header as required.)

Since this uses TeX to sort, it can be very slow for large databases. In which case, you may want to consider using datatooltk to perform the sorting. (There are some examples in Sorting Data.)
You can adapt this method for the second part of your example. (Include extra columns for Concepts, Text etc, iterate over the data using \DTLforeach* and use the placeholders defined in the command=header list.)