Packed records or packed arrays are used when you wnat to decrease the memory needed to store theese. Packed comes into effect if the records or arrays contains variables which by default aren't alined to 2, 4, 8 bit alingment. Default alingmnets for variables differ by variable type and is defined so that it offers optimized performance for working with theese variables.
But with the usage of Packed command you can override theese default alignments and pack data closely together thus lowering the memory consumption. Doing so also decreases the peformance of working with theese variables a bit since they are no longer optimally aligned. Unles you are using large record or large array difference in performance probably won't even be noticable.

Using of Packed records is sometimes necessary if you are sending some data to another application which is developed with different compiler since not all compilers use same data aligment for reaching optimal performance. In some cases using non packed records can cause for data in other program to be read incorectly.
So always make sure to check program documentation as of which type of records it can recieve. Same goes for varios API functions.