If you strictly want to go with one main list, you'd need to handle this with views and preferably using audience targeting. A similar question can be found here. However, if you will handle the requirement like this, users still have the same permission to items which wouldn't be shown in the view targeted to them - the items just wouldn't be directly visible, although quite trivially accessible with some understanding of SP.
Another (likely bad) option would be to handle list items each with unique permissions, but this would be a terrible solution from managing point of view.
Generally I'd suggest to handle this requirement by creating several lists. Possible usage of lookup fields and/or content queries for simulating "a main list" could be implemented on top of that.