You don't have to have a core switch. But it is standard practice to do so - it is part of Cisco's hierarchical three layer model (access, distribution and core) where each different tier has different functions. The core's main function is the high speed switching of packets whereas more CPU intensive operations (classification of packets, ACLs etc.) are performed at other layers.
You could define VLANs and routed interfaces on the firewall but this might not be optimal depending on the size of your network. Do you really want every inter-VLAN routed packets going up to the firewall and back? And if your firewall fails then you have crippled your network.
Maybe if you can post a diagram of what you are planning it might help to understand your requirements better.