These are given as inductive/projective limit topologies. I assume that  $C_0^\infty$ means compactly supported and replace it by $C_c^\infty$. You only have to topologize the space $C^k(X)$ (k-times differentiable functions). E.g., for subsets of the real line the norm is given by: 
$$ ||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, the $C^\infty(X)$ space is metrizable as countable limit of metrizable spaces. The space $C^\infty(X)'$ is metrizable, if and only if $C(X)'$ is metrizable, if and only if $X$ is second-countable.

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)'.$$