These are given as inductive/projective limit topologies. I assume that $C_0^\infty$ means compactly supported and replace it by $C_c^\infty$. We topologize the space $C^k(X)$ (K-times differentiable functions) with the norm: $$ ||f||_k = ||f||_\infty + || f' |_\infty + \dots + || f^{(k)} ||_\infty.$$ If you know, how you topolgize inductive and projective limits, e.g. via an universal mapping property, then the following definition gives you the topology:
For $X$, define as projective limit $$ C^\infty(X) = \cap_{k=1}^\infty \; C^k(X),$$ then the dual is an inductive limit $$ C^\infty(X)' = \cup_{k=1}^\infty C^k(X)'.$$ So in particular, these spaces are metrizable as countable limits.
For non-compact $X$, choose a collection $(K_i)_{i \in I}$ of compact subsets $K_i$ of $X$ such that $X =\cup_{i \in I} K_i$. One efines as inductive limit $$ C_c^\infty(X) = \lim_{J \subset I \; finite}^{\rightarrow}\cap_{k} C^k(\cup_{i \in J} K_i).$$ For the dual, the limits switch $$ C_c^\infty(X)' =\lim_{J \subset I \; finite}^{\leftarrow} \cup_{k} C^k(\cup_{i \in J} K_i)'.$$