On Roblox, the term "local part" designates a BasePart that is local to one Player, that is, that can only be seen and interactable by that player. A part, or any object, actually, can be made local to a player by being put as a child of an object that is not replicated to other clients and the server, such as that player's camera. Local parts are not directly a feature of Roblox; they only exist because of the way replication works on Roblox.
Local parts can be used to do things such as preventing a particular player from going into a specific area by putting a door that is local to him, or making a platform that will only appear for a particular player. They can also be used in building games to allow all the players to work in the same area, but without seeing other players' parts.For example, the following code, put in a local script that is running on a player's client, would create a part of a random color at position
-- This code creates a part of a random color and puts it in the local camera, which makes it not replicate to other instances of ROBLOX. Instance.new('Part', Workspace.CurrentCamera).BrickColor = BrickColor.Random()
Local parts, while they can be very tempting to use in certain cases, should be avoided, because they are in no way supported by ROBLOX. The ROBLOX team has expressed clearly that they discourage the use of them and that it is likely that they will become unsupported in the future.
The physics for local parts are not handled in the same way as the physics for normal parts because they cannot replicate to the server. For this reason, they will often behave in unexpected ways. Using too many of them may cause lag because the physics for them cannot then be distributed.
The functionality above can still be used, however. Read replication filtering for more information.