Each device will have an internal network IP within your home network, usually 192.168.x.x or 10.x.x.x
These IP's allow all the computers in the network to communicate amongst themselves.
The modem will connect to the ISP and be provided with 1 external IP address. The Router will communicate to the modem if you make a request to an domain or IP address that cannot be found in the local network.
While your public IP address, as provided by your ISP, usually doesn't change, it could change.
Your internal devices will all have distinct IP Addresses, but depending on how you set up your network, the may or may not change as you turn them on and off. There are two modes for assigning IP Addresses on your internal network: Static and Dynamic (DHCP). If you decide to assign each device a static IP Address, then the address will never change. If you decide to allow your router to dynamically assign IP Addresses, then each device could get a different IP address each time it turns on.
Think of it like a City, Zip Code, Community, Apartment/house/Unit #.
Here is a common default private IP address. 192.168.1.0 (addresses range in that network from 192.168.1.1 - 192.168.1.254; once you hit 255 at the end, it becomes 192.168.2.0 because each grouping or "octet" fills 255 bits.)
Okay.. the analogy... 192.168.1.X (x = an unknown number from 0-254) = Miami.33166.HamptonLakes.Apartment/House/Unit#.
Example: 192.168.1.1 = Miami.33166.HamptonLakes.GateHouseToEnterYourCommunity. The first address of your network's IP address range is defaulted to your router aka Gateway (since it's actually also is the gateway to your internal network the way a gate house is to a community).
Now, you can have addresses within the gated community (the community only has 252 addresses available since .1 was given to the gatehouse and .254 is reserved as a broadcast address (you don't need to really know this). Let's say that your Laptop enters the community and requests an address as a part of the network. The router will assign an address to the laptop. Keep in mind, as long as it's in the network (the community), the first 3 octets are the same as the router (UNLESS the community is bigger and it can actually go past 255 addresses; it will then affect the 3rd octet but I doubt you'll hit that situation in a home or any small business. So your router also acts as an address provider (or person assigning a home to residents<-- your laptop) aside from being the gateway that has a directory of the entire neighborhood (and security guard). Your laptop gets the address 192.168.1.3. (Unit 3 of the community #1 aka Hampton Lakes). Now keep in mind that you are using the default of this community, which is nonpermanent addressing that is done automatically between the router & user device. It's as if your laptop (the resident of the network) is leasing the home #3 and a normal dynamic addressing (the default for most routers) has a lease period of a week. So once it's been a week, your router will drop the address from the lease pool and potentially assign it to another device (especially if it specifically asks for it; the user manually configures it) if your laptop isn't connected to renew the same address with another request.
So it is sort of like leasing or renting an apartment or home as the IP terms indicate. Static (permanent) is different where you have to manually request the specific address from the device. You can sort of consider this as purchasing one of the homes. Now no other person or device can use that address to some extent. To actually set this in stone, you'd have to get into your router (or a device such as a server that takes care of addressing) and permanently assign that address to the same device as well since the router doesn't know that they device actually bought the address. That requires more configurations but this comment is already way too long, and I doubt you will ever need to assign static IP addresses.