I use this milling routine for both o.d. and i.d. cut entry/exit, but especially i.d.
High speed machining requires no non-tangent moves (no instant change in direction). This includes entry and exit moves.
In a bore this can be simple to achieve, and the results are clean. This example is to show cutting from center of a 1" bore with a 3/8" endmill.
Your settings on entry and exit should be "tangent", not "perpendicular" moves.

Bore = 1"
Cutter = 3/8"
(1-3/8)/2 = radial move from bore cl to cutting radius = 5/16"r

I create a 45 deg linear entry on which cutter comp can be turned on. This is paired with a 135 deg arc of the same radius as the linear entry move to create a 180 deg smooth entry or exit.
5/16 x (sqrt(2)-1) = 5/16 x .41421 = linear entry length and radius of 135 deg arc entry move = ~.1295" motions. The number .41421 comes from the square root of 2, minus 1. The formula at 45 degrees is pretty basic.

If your entry point (center of bore) is 0,0 then your code might look something like this

G00 X0 Y0
Z0.1
G01 Z-0.5
G41 D1 X.0915 Y-.0915 F5. (.1295" linear at 45deg with comp turned on)
G03 X.3125 Y0. R.1295 (.1295" radius)

X-.3125 R.3125 (first half of cutting 1" bore)
X.3125 R.3125 (second half of cutting 1" bore)

X.0915 Y.0915 R.1294 (arc off of bore, same r as entry arc)
G01 G40 X0. Y0. (linear return to bore center, cut comp cancelled)
G00 Z1.

This method is all tangent moves and generates a clean entry and exit, allows for cutter comp, and uses the same entry and exit point.

For making very round holes where I often hold as tight as .0002" total tolerance I use a modification of this programming method.
Modifying the previous example will show this method easily and clearly.

G00 X0 Y0
Z0.1
G01 Z-0.5
G41 D1 X.0915 Y-.0915 F5.
G03 X.3125 Y0. R.1295
X-.3125 R.3125
X.3125 R.3125 (complete the first diameter in ccw/g41 climb cutting)
G42 G02 X-.3125 R.3125 (reverse direction and comp to cw/g42 conventional cutting)
X.3125 R.3125
X-.3125 R.3125
X.3125 R.3125 (make 2 full reverse diameter cutting moves)
G41 G03 X-.3125 R.3125 (return to ccw/g41 climb cutting)
X.3125 R.3125
X.0915 Y.0915 R.1294
G01 G40 X0. Y0.
G00 Z1.

This routine, by reversing direction in the bore, corrects for much of the machine backlash however small, and produces a very clean round bore.

Mastercam will not generate this second method for me without all the entry and exit moves so I tell it make 4 finish passes and I manually remove the entry/exits in the middle and reverse the middle 2 passes. I hope these simple methods might help someone struggling with milling entry and exit styles. I do use the first method on outside shapes - the common entry/exit point gives me flexibility and control for step-down roughing routines and springing finishing passes.