A list is a list - an ordered sequence of values. Use it for whatever you want. Two possible uses are to implement a stack or implement a queue, but you don't have to use them like that. For example Some list implementations (eg linked list) can grow or shrink to fit the amount of values, and efficiently support removing or adding values in the middle, and so may be a good substitute for an array in some applications.
Not always - it depends on the implementation of the list. For example a linked list has the same overhead for inserting an element in any specified position (indeed, if the implementation only keeps a ref to the head node then you have to search sequentially to get the end node, which gives it the highest overhead)