A typed array can hold any type available in GDScript, for example a
Array[Image] is possible. Packed arrays are only available for exactly the types listed in the API references, (color, int, float, vector, string and byte).
Packed arrays "Pack[...] data tightly [...]", so it's a memory and possibly performance optimization. But as always you should avoid premature optimization and focus more on getting features done. If a typed array turns out to be a bottleneck it might be worth replacing it with a packed array, but in any case you need to measure performance and memory usage before and after making such a change in order to know if changing it actually helped or made things even worse.