For one, you're calling acquire_screen then doing non-screen-related things (and not calling release_screen). Second, you're showing the mouse on an off-screen buffer. Third, you have a non-inlined function in your header.
Unrelated, but important.
The actual problem is that you draw the buffer to the screen once, before showing the mouse on it, then never again. readkey() is blocking, so you can't draw the buffer afterward. You should make a loop that always cycles (eg.
/* code here */
after initializing everything. When you draw, clear the buffer, draw to the buffer instead of the screen, then use blit()] to copy the buffer to the screen. To show the mouse, use draw_sprite() to draw mouse_sprite onto the buffer right before blitting to the screen.